SciTE的二次开发,用COM接口调用相关功能

66 篇文章 2 订阅
57 篇文章 1 订阅

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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值