SciTE的二次開發,用COM接口調用相關功能

Programmatically interact with the SciTE editor via COM objects

 September 20, 2015 - 6:15 amAutoHotKeyCOMGUIOffice AutomationRegular Expressions / RegExSciTEText Manipulation

SciTE editor via COM objects

SciTE editor via COM objects

SciTE is a great IDE that I use with AutoHotKeySPSSSQLPython, XML, HTML, etc.   I love being able to use regular expressions in it to manipulate text and it has some very cool capabilities.  This video is one of my favorite demonstrations how powerful SciTE can be at manipulating text.

Here is a short tutorial and demonstration on how to manipulate SciTE editor via COM objects and Windows commands with AutoHotKey.

 

SciTE commands

 

SciTE editor via COM objects- Editor Windows Commands

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

;~ http://www.scintilla.org/SciTEDoc.html  ;SciTE commands

;~ http://www.scintilla.org/SciTEDirector.html  SciTE Director Interface

;~ http://www.scintilla.org/ScintillaDoc.html  ;SciTE documentation

;~ https://www.youtube.com/watch?v=upPtaEghnRM

#SingleInstance, Force                  

RAlt::Reload

RControl::

;************SciTE editor via COM objects- Editor Windows Commands************************************************

oSci := ComObjActive("SciTE4AHK.Application") ;get pointer to active SciTE editor window

;~ MsgBox % oSci.Selection ;Text that is selected

;~ MsgBox % oSci.Document ;get entire SciTE document

;~ MsgBox % oSci.CurrentFile ;path to current file

;~ MsgBox % oSci.SciTEHandle ;window handle

;~ MsgBox % oSci.ActivePlatform ;

;~ MsgBox % oSci.UserDir

;~ MsgBox % oSci.Version

;~ MsgBox % oSci.IsPortable ;I'm guessing blank means not portable. Prob a 1=portable

;~ MsgBox % oSci.SciTEDir

;~ oSci.ReloadProps() ;Reload property files

;~ oSci.OpenFile("C:\temp\test.ahk")

;~ oSci.DebugFile("C:\temp\test.ahk")

;***********tabs*******************

;~ MsgBox %  oSci.Tabs.count

;~ oSci.SwitchToTab(1) ;Switch to tab (zero based)

;~ MsgBox % oSci.Tabs.List ;list of open tabs

;~ for Tab_Path in oSci.Tabs.Array ;path to each open Tab

  ;~ MsgBox % "tab " A_Index a_tab Tab_Path

;~ oSci.InsertText("my Text") ;insert my Text

;~ oSci.InsertText(";my Text",30) ;insert my Text at position 30

;~ oSci.Message(0x111,420)  ;Clear output

;~ oSci.Output("hello world")

;***********Send DirectoryMessage*******************

;~ oSci.SendDirectorMsg("close:") ;close (lots of director messages to send

;~ oSci.SendDirectorMsg("find:Joe") ;find the next instance of the word Joe

;~ oSci.SendDirectorMsg("replaceall:Joe\000Bob") ;replace all occurrencees of Joe with Bob

;~ oSci.SendDirectorMsg(saveas)

;***********SendMessage*******************

;~ https://autohotkey.com/docs/misc/SendMessageList.htm    0x111 is WM_COMMAND

;~ https://msdn.microsoft.com/en-us/library/windows/desktop/ms647591(v=vs.85).aspx

;~ oSci.Message(0x111,101)  ;create new tab

;~ oSci.Message(0x111,102)  ;Open File

;~ oSci.Message(0x111,103)  ;Open selected file name

;~ oSci.Message(0x111,104)  ;Revert file

;~ oSci.Message(0x111,105)  ;Close file

;~ oSci.Message(0x111,106)  ;Save file

;~ oSci.Message(0x111,110)  ;Save As

;~ oSci.Message(0x111,111)  ;Export as HTML

;~ oSci.Message(0x111,112)  ;Export as RTF

;~ oSci.Message(0x111,113)  ;Export as PDF

;~ oSci.Message(0x111,115)  ;Export as LaTeX

;~ oSci.Message(0x111,116)  ;Save a copy

;~ oSci.Message(0x111,118)  ;Copy path of this file

;~ oSci.Message(0x111,130)  ;Page Setup

;~ oSci.Message(0x111,131)  ;Print

;~ oSci.Message(0x111,132)  ;Load Session

;~ oSci.Message(0x111,133)  ;Save current Session

;~ oSci.Message(0x111,140)  ;Quit SciTE

;~ oSci.Message(0x111,150)  ;clear encoding?

;~ oSci.Message(0x111,151)  ;UTF-16 Big Endian

;~ oSci.Message(0x111,152)  ;UTF-16 Little Endian encoding

;~ oSci.Message(0x111,153)  ;UTF-8 with BOM

;~ oSci.Message(0x111,154)  ;UTF-8

;~ oSci.Message(0x111,201)  ;Undo

;~ oSci.Message(0x111,202)  ;Redo?

;~ oSci.Message(0x111,203)  ;Cut

;~ oSci.Message(0x111,204)  ;Copy Highlighted text

;~ oSci.Message(0x111,205)  ;Paste?

;~ oSci.Message(0x111,206)  ;Delete

;~ oSci.Message(0x111,207)  ;Highlight all text in main window / Select All

;~ oSci.Message(0x111,208)  ;Paste text

;~ oSci.Message(0x111,230)  ;Match to brace (finds matching brace

;~ oSci.Message(0x111,232)  ;Show Calltip

;~ oSci.Message(0x111,234)  ;Complete word

;~ oSci.Message(0x111,240)  ;UPPERCASE selected text

;~ oSci.Message(0x111,241)  ;Lowercase selected text

;~ oSci.Message(0x111,242)  ;Block Comment (toggle ;~ on multiple lines)

;~ oSci.Message(0x111,244)  ;Stream comment */text/*

;~ oSci.Message(0x111,245)  ;Copy as RTF

;~ oSci.Message(0x111,246)  ;Box comment */ mutliple lines`n /*

;~ oSci.Message(0x111,248)  ;Join Paragraph

;~ oSci.Message(0x111,303)  ;run (F5)

;~ oSci.Message(0x111,304)  ;Stop

;~ oSci.Message(0x111,401)  ;output - verticle split- toggle

;~ oSci.Message(0x111,402)  ;View whitespace

;~ oSci.Message(0x111,403)  ;View End of Line

;~ oSci.Message(0x111,404)  ;???????????

;~ oSci.Message(0x111,405)  ;View extra space after number

;~ oSci.Message(0x111,406)  ;View Margin

;~ oSci.Message(0x111,407)  ;View linenumbers

;~ oSci.Message(0x111,408)  ;View Toolbar

;~ oSci.Message(0x111,409)  ;View output bar

;~ oSci.Message(0x111,410)  ;View Tab bar

;~ oSci.Message(0x111,411)  ;View statusbar

;~ oSci.Message(0x111,412)  ;View parameters

;~ oSci.Message(0x111,414)  ;Wrap

;~ oSci.Message(0x111,415)  ;Wrap output

;~ oSci.Message(0x111,420)  ;Clear output

;~ oSci.Message(0x111,421)  ;Switch pane

;~ oSci.Message(0x111,461)  ;Open SciTEUser.Properties filew

;~ oSci.Message(0x111,960)  ;Always on top

;~ oSci.Message(0x111,1118) ;Open new SciTE window

;~ oSci.Message(0x1000+2)   ;reload utilities?

;****** end of SciTE editor via COM objects*****

;***********use spy to find wm_command;*******************

;~ https://autohotkey.com/board/topic/90307-hotkeyp-spy-utility-for-detecting-wm-command-messages/

 

A specific version of the SciTE editor for AutoHotKey can be downloaded here and more generic documentation can be found here.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章