雖然發現 vgod 這號人物才第一天。不過, 我真的很欣賞他
- 另一個台灣之光 – Sikuli (開放原始碼新聞網, 2010-01-26)
Sikuli 是個以圖形操作為基礎的程式開發工具……
vgod 寫的 Sikuli 是用直覺的『螢幕貼圖』來完成自動化。不像其他熱鍵工具, 需要指定『視窗控件 (window control) 的名字』 (例如: AutoHotkey)
.
(...繼續閱讀.../...CONTINUE...)
/ 水瓶尤加利的 DIY 小天地 / 雜誌模式 / English Posts
----
生活 (居家修繕 DIY, 陽台菜園, 攝影遊記...) / ----
科技 (軟體, 硬體, 程式設計, 電腦與我...) /
雖然發現 vgod 這號人物才第一天。不過, 我真的很欣賞他
- 另一個台灣之光 – Sikuli (開放原始碼新聞網, 2010-01-26)
Sikuli 是個以圖形操作為基礎的程式開發工具……
vgod 寫的 Sikuli 是用直覺的『螢幕貼圖』來完成自動化。不像其他熱鍵工具, 需要指定『視窗控件 (window control) 的名字』 (例如: AutoHotkey)
.
在 改造 Taglocity 3.0 Tag Bar (2) ---- 反映標籤狀態, 只能做到『一次性』的反映標籤狀態。接下來, 要加入『即時更新』的功能。
以下方法各有優缺點, 也不確定是否適合每個人的使用情境, 所以重點放在優缺點的討論 :
.
『即時更新』可以用『定時重複執行』或是『觸發執行』來實現,
2) If you don't deactivate the timer when the application closes it will likely crash
.
方法 | 優缺點 |
定時執行 SetTimer (User32) @ 前提 : 對 VB 有相當的把握 | O 優點 :
|
事件觸發方式, 例如 : Catch all events on a folder (outlookcode.com) (尚未實作) | O 優點 :
|
以 AutoHotKey 觸發 @ 前提 : 需要有 AutoHotKey 經驗 | O 優點 :
|
.
最後, 目前完成度最高的, 是『AutoHotKey 串連 Outlook』
COM_Init()
poul := COM_CreateObject("Outlook.Application")
' ... (此處最好有容錯處理)
ol_func := COM_Invoke(poul, "updateTagBar")
' ... (此處最好有容錯處理)
COM_Release(ol_func)
COM_Release(poul)
COM_Term()
.
還記得我們照著這樣的脈絡一路看下來
.
AutoHotKey 只需要 2MB 的安裝檔, 一方面擁有『批次檔的便利』, 另一方面又有『駭客等級的強大功能』,(還不只以下這些)
雖然 AutoHotKey 並不能取代『主流』的程式語言, 例如 : Visual c++, Visual Basic, Delphi, ……。
但是, 如果你需要完成軟體自動化的工作, 或是想要自己寫一些系統小工具, 卻又不知該用什麼程式語言, 我會建議你一定要試試 AutoHotKey。
.
以下這些, 都是用 AutoHotkey 寫的。相信看了這些例子, 你也會同意我的看法。
.
.
.
.
.
|
.
.
- 取色器 .ahk
一個加強版的顏色神偷,運行後屏幕右上角出現個類似迅雷懸浮窗的色塊,隨著光標指向的色變化- 非法進程設置工具 .ahk
小眾曾經介紹的小軟非法進程設置工具 - 鎖定你的電腦的 AHK 版- 用 AHK 語言開發木馬 .doc
- 用快捷鍵得到當前選中文件的路徑
.
- NiftyWindows -- by Enovatic-Solutions:
這個腳本讓用戶可以進行更加方便的窗口操作,比如拖放,縮放,最大化等,它的特點是用右鍵拖放。- Screen Magnifier -- by Holomind:
屏幕放大器,可以定義刷新間隔,縮放級別;防鋸齒.- LiveWindows: Watch Dialog-boxes in Thumbnail -- by Holomind:
動態查看下載、文件拷貝和其他一些帶進度條的腳本,它會用一個很小的「總在最前」的窗口來顯示這些進度。- Mouse Gestures -- by deguix:
鼠標手勢:此腳本檢測你在鼠標右鍵按下後的鼠標移動情況。如果它覺得你畫了一個內定的手勢時,會啟動一個程序或者執行一個你定義的操作。
.
上一篇提到『用 AutoHotkey 自動化軟體操作』的一種方式是 控制其他程式的 視窗控件 (window control)。
常見的 視窗控件 (window control) 如下:
以下就來說明如何取得『控件』的名稱與文字。
.
AutoHotKey 附帶的 AutoIt3 Window Spy 就是『取得控件資訊』的工具, 可以參考以下的介紹
.
另外, 也有用 AutoHotKey 腳本寫的 WinGet, another Window SPY (Smurth, 2008-11-12, AutoHotkey Community Forum)
.
至於更簡單的版本, 可以參考我寫的 TinySpy.ahk, 其中最關鍵的是以下幾行
…… |
.
取得『記事本』的視窗資訊 和 文字 |
無法用滑鼠選取文字的『對話框』, 一樣可以把文字取出來 ![]() |
.
完整腳本如下, 扣掉註解還不到 40 行
#SingleInstance,Force Gui, Font, S11 CDefault ; Need +LastFound to make WinExist() to return window id of GUI itself ; set Spy update period ; config Spy ON/off (and also config AlwaysOnTop or not) according to "ifSpyOn" checkbox, GuiClose: GetSpyInfo: ; Not Spy on GUI itself WinGetTitle, win_title, ahk_id %win_id% |
.
以下是幾個『用 AutoHotkey 自動化軟體操作』的例子,
.
Hack Attack: One-click DVD rips (lifehacker.com, 2006-10-31)
autohotkey 原始碼 (lifehacker.com)
主要做法是『呼叫視窗』、『送按鍵』……
…… WinWait, DVD Shrink 3.2 - E:\ WinActivate, DVD Shrink 3.2 - E:\ Sleep 500 Send, {Ctrl Down} Send, {b} Send, {Ctrl Up} Sleep 600 IfWinExist, …… …… |
類似的自動化, 可以使用 AutoHotKey 提供的 AutoScriptWriter 來『錄製』腳本
.
在需要『執行精準動作』或是『搭配邏輯判斷』的時候, 就需要用 視窗控件 (window control) 的方式來寫腳本, 也就是 AutoHotKey 的 Control, ControlGet, ControlGetText, ControlSetText, ControlSend, ControlClick …… 等指令。
最近我寫的一個腳本, 有如下的功能
|
|
IfWinNotExist, …… |
(『拖放』得到的是 8.3 檔名, 類似 xxxxxx~2.xxx) |
Loop %1% |
|
|
如果需要, 再補上完整的程式。
.
…… PostMessage, 1226, 1226, 0x201,, ahk_id %hWnd% ; Left Click down PostMessage, 1226, 1226, 0x202,, ahk_id %hWnd% ; Left Click Up WinWaitActive, ahk_id %hWnd%,,5 ; Wait for SRH Tray left-click-Menu …… DllCall( "GetMenuString", UInt,hMenu, Int,idx, Str,mStr, Int,nSize, UInt,0x400 ) If InStr( mStr,Drv ) { ControlSend,,{Down %A_Index%}{Enter},ahk_id %hWnd% Break } …… |
.
包山包海的 AutoHotKey, 怎麼說呢?
最近開始使用 AutoHotKey, 這才真正體會到 AutoHotKey 的強大, 覺得該為它『正名』 :
骨子裡的『AutoHotKey』, 可是遠比『熱鍵工具』來得強大的哦!!
.
此外, AutoHotKey 還有批次檔所沒有的 GUI 介面
.
.
簡睿的這一篇, 是很好的『入門指南』, 包括 : AutoHotKey 的下載、安裝、基本概念、『熱鍵』『熱字串』 的設定 …… 等
……
AutoHotkey顧名思義就是協助你將常用按鍵自動化的工具
……
本文會一步一步地把建立腳本檔的步驟清楚、簡單的介紹給你,讀者們只要依樣畫葫蘆馬上就能感受到AutoHotkey的強大威力了!
.
.
以下的參考資料, 同時也介紹了許多 AutoHotkey 的其他功能
.
撰寫腳本時, 當然更要隨時查閱官網的 參考資料
.