2006年06月10日
[PSPad] PSPad的Scripting功能初探
由於Java IDE通常都很龐大,開啟時會耗費許多系統資源與載入時間,因此有些小程式或修改幅度不大的程式,經常都是使用PSPad之類的文書編輯系統來直接修改,修改、測試完成後就複製到實際運行環境,先前發表的[Windows] 部署相同目錄結構檔案的簡便方法就是為了方便複製檔案而寫的小Script,因為PSPad由4.3版開始就提供了透過WScrip執行的Script環境,所以特別的研究要如何簡化複製程式的作法。
PSPad 安裝目錄的Scripts資料夾與功能表的Scripts是對應的,我們把要執行的VBScript或JavaScript放到對應的資料夾裡,再透過 Scripts功能表裡的【重新編譯 Scripts】來重新產生其下的功能表與各Script檔;例如功能表上的VBScript sample對應的檔案就是C:\Program Files\PSPad\Scripts\VBScript\Sample.vbs,VBScript Sample的子功能選項就是Sample.vbs裡的多個副常式(Sub routine)。
PSPad的Script有幾個固定的格式必須遵守:
複製檔案到以網路磁碟機連結的主機的程式如下:
程式很簡單,應該很容易看懂。PSPad script能使用的函數可由其【幫助】的"Script"查到。
##
PSPad 安裝目錄的Scripts資料夾與功能表的Scripts是對應的,我們把要執行的VBScript或JavaScript放到對應的資料夾裡,再透過 Scripts功能表裡的【重新編譯 Scripts】來重新產生其下的功能表與各Script檔;例如功能表上的VBScript sample對應的檔案就是C:\Program Files\PSPad\Scripts\VBScript\Sample.vbs,VBScript Sample的子功能選項就是Sample.vbs裡的多個副常式(Sub routine)。
PSPad的Script有幾個固定的格式必須遵守:
- 開頭標明程式名稱(稱為module_name),其名稱必須唯一
- 必須有Init副常式,在Init裡以addMenuItem將可供執行的副常式加到功能表上;addMenuItem最多可有4個參數:
- 功能選項字串:顯示在功能表上的標題文字
- 上層功能選項名稱:若為空白則該副常式在Scripts功能表獨立一項,若有別的字串,則為該字串的子功能選項
- 副常式名稱字串
- 執行此常式的快速鍵字串(選項,可有可無)
| const module_name = "VBSample" 'this name must be unique !!! const module_ver = "0.001a" 'version ' name "Init" is required, its called automatically during initialization to create menu items sub Init addMenuItem "Print all files","", "PrintAll", "Shift+Ctrl+P" ' 自己佔獨立一列,無子功能表; 定義了快速鍵 addMenuItem "Main method", "VBscript sample", "Main" ' 在VBscript sample項目下的子功能選項 addMenuItem "PSPad version","VBscript sample", "Demo1" addMenuItem "Script module version","VBscript sample", "Demo2" addMenuItem "Open script file","VBscript sample", "Demo3" addMenuItem "LOG Access","VBscript sample", "DemoLog" end sub |
複製檔案到以網路磁碟機連結的主機的程式如下:
| const module_name = "duplicate" 'this name must be unique !!! const module_ver = "0.001a" 'version sub Init addMenuItem "同步到主機", "", "duplicate", "CTRL+M" end sub sub duplicate dim oEditor, sSource, sTarget, sDrive set oEditor = newEditor() 'new editor object oEditor.assignActiveEditor ' 把oEditor設定成編輯中的檔案 sSource = oEditor.fileName() '取出檔案全名(含路徑) sTarget = Mid(sSource,2,99) ' 去掉磁碟機代號 if InStr(sSource, "\xyz\") > 0 then ' 檔名中有\xyz\則複製到m:,否則複製到o: sDrive = "m" else sDrive = "o" end if sTarget = sDrive + sTarget oEditor.saveFileAs(sTarget) ' 另存檔案到主機同名目錄 msgBox(sSource + " 同步到==> " + sTarget) 'oEditor.closeFile oEditor.openFile(sSource) ' 檔名已變成主機的檔名,必須再重新開回原來檔名 end sub |
程式很簡單,應該很容易看懂。PSPad script能使用的函數可由其【幫助】的"Script"查到。
##
