小鳥學ahk.doc_第1頁
小鳥學ahk.doc_第2頁
小鳥學ahk.doc_第3頁
小鳥學ahk.doc_第4頁
小鳥學ahk.doc_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

小鳥學AHK(1)之運行程序或打開文檔2008-06-27 01:33AHK就是AutoHotKey,是一款免費的、Windows平臺下開放源代碼的熱鍵腳本語言。親愛的朋友,叫我怎么向你推薦它呢!COOL,對,就是酷,那么多干巴巴的介紹我不想COPY,如果你掌握了它,哪怕只是會一點點,也足夠你炫耀了.比你身邊所謂的電腦高手還要風光.這個理由夠了吧?那么AHK能做什么呢?對不起,我說不清楚,因為我也是小鳥,你正在看的垃圾本來就是本小鳥的學習筆記而已.但我可以肯定的一點是,你這個人能做的事它都能做,你所有在電腦里的行為除了人類主觀的部分它都可以替你完成得更快更好.而這也只是它初級的部分.更厲害的是它可以做程序,甚至可以做病毒(聽說的)慢著別走,我知道你不想學編程,我也不想,AHK絕對不會拒絕你我這樣的懶人的.它其實非常簡單,非常容易非常的.cool!只要你有一點點分析問題的邏輯推理能力就能上手.當然,要達到高級的境界還是應該有一些編程基礎的.寫批處理的能力就完全夠了.我一向認為男人至少要擅長一項運動,一種樂器,一種編程.和拿手的幾個小炒.什么?你不是男人?OK,把照片和電話發(fā)給我.其實我也不合格因為我還不會什么樂器,扯遠了.總之你不會后悔的.知道那些會做圖做網(wǎng)頁甚至會給別人下木馬的駭客們有什么感覺么,對,很爽的一種控制與創(chuàng)造的感覺,一個男人如果沒有體會到這種感覺,多遺憾!先說這么多,先介紹一些AHK的基礎知識,用過熱鍵啟動程序的軟件么?我們今天來實現(xiàn)它.AutoHotKey(安裝版下載|綠色版,下文都簡稱為 AHK)。第一次下載 AHK 的朋友建議下載安裝版,以后升級的話,下載綠色版,然后覆蓋到 AHK 的安裝目錄。下載安裝版的好處是:系統(tǒng)會自動關聯(lián) .ahk 文件。在AHK目錄里建立AutoHotKey.ini文件,用記事本打開輸入代碼,然后運行AHK程序就可以實現(xiàn)這些代碼的功能.1運行程序或打開文檔Run(運行)命令用來運行或打開程序、文檔、網(wǎng)址(URL)或快捷方式,例如:Run, NotepadRun, C:My DocumentsAddress List.docRun, Run, C:My DocumentsMy Shortcut.lnkRun, mailto:上面例子中的命令都可以指配給含有 熱鍵標識(hotkey label) 的熱鍵。在下面的第一個例子里,被指配的熱鍵是Win+N,而第二個是Control+Alt+C:#n:Run, Notepad!c:Run, calc.exe上面的例子都屬于單行熱鍵,因為它們都只是由一個命令組成。如果需要熱鍵執(zhí)行更多的命令,就要把第一行命令放到熱鍵定義式的下面,并且使最后一行為 return(返回)。例如:#n:Run, Run, Notepad.exereturn上面的Notepad.exe(記事本)、calc.exe(計算器)等都是系統(tǒng)程序,如果要運行非系統(tǒng)程序則需要指定它的完整路徑:Run, %ProgramFiles%WinampWinamp.exe在上面的例子中,%ProgramFiles% 是操作系統(tǒng)支持的 環(huán)境變量(environment variable)。之所以使用它而不是用像C:Program Files這樣的路徑,那是因為這樣可使得腳本有更好的可移植性,就算別的電腦的系統(tǒng)不是在C盤也可以正確執(zhí)行命令。如果希望腳本在程序或文檔關閉后才繼續(xù)執(zhí)行下一步,那么就需要使用 RunWait(運行等待) 命令來代替Run命令。例如在下面的這個例子中,MsgBox(對話框)命令部分將不被執(zhí)行,直到用戶關閉了記事本之后才繼續(xù):RunWait, NotepadMsgBox, 任務完成(記事本已被關閉);彈出對話框提示任務完成.;后的文字是注釋,對程序沒有任務影響.小貼士 - Ctrl、Alt、Shift 在 AHK 怎么表示?WIN的符號是 #Ctrl 的符號是 Alt 的符號是 ! Shift 的符號是 + 如果你想按下“Ctrl + Alt + Shift + Win + Q”(這個快捷鍵真牛。- -b)來啟動 QQ 的話,可以這樣寫:!+#q:run D:qqqq.exe快增加自己的快捷鍵吧,保存 AutoHotKey.ini 后,右擊系統(tǒng)托盤那個 H 圖標,選擇“reload this script”重啟 AHK,要注意,每次修改腳本后都要重啟腳本。(除介紹部分主要來自AHK幫助文件)小鳥學AHK(2)之發(fā)送鍵擊或點擊動作2008-06-27 23:47關于按鍵精靈,我認為它很一般,雖然國內(nèi)的支持率很高,使用者很多,有點地頭蛇壟斷的感覺.對于小鳥來說,按鍵精靈太弱了,要實現(xiàn)稍微復雜一點的功能就要借用讓人頭疼而且為數(shù)不多的C語言插件函數(shù),那我還不如直接編程算了.如果AHK也支持CS-script,那按鍵精靈就完敗了.據(jù)說AHK很快就支持了.當然對于我們小鳥來說,先不考慮這些也不用什么語言,AHK常用的命令就非常強大能做很多事,可以這么說,AHK的初級用戶就相當于按鍵精靈的高級用戶了.就內(nèi)存占用來說,按鍵精靈也太大了,不適合做系統(tǒng)常駐程序,而AHK一般只有1到2M.我以前用按鍵精靈做過一些簡單的事,比如在魔獸世界里練習附魔什么的,完全就是靠鼠標找點不停地來回點擊,faint.現(xiàn)在已經(jīng)完全放棄它.不過如果你有使用按鍵精靈的基礎,相信會更容易理解和上手AHK的.閑話到此,今天我們的課程是發(fā)送鍵擊或點擊動作使用 Send(發(fā)送)命令來發(fā)送鍵擊動作到激活窗口(指最前面的窗口)。在下面的這個例子里,Win+S 變成鍵入簽名的熱鍵。按下軟件前必須確認窗口(例如編輯器或電子郵件草稿窗口)處于激活狀態(tài):#s:Send, Sincerely,enterJohn Smithreturn在上面的例子中,除了enter意外所有的字符都被逐字發(fā)送,因為enter模擬了回車鍵。下面的將舉例說明一些其它常用的特殊字符:Send, c!tabpasted:v上面的例子將會發(fā)送Control+C(復制),然后是Alt+Tab(切換窗口),最后是發(fā)送字串“pasted:”并接上一個Control+V(粘貼)。鼠標點擊: 對某個窗口發(fā)送點擊動作需要測定點擊位置的X軸和Y軸坐標。這可借助AutoHotkey附帶的AutoScriptWriter或者Window Spy來實現(xiàn)。下面就是應用Window Spy的方法:運行Window Spy(從開始菜單或者在AutoHotkey的托盤圖標上點擊右鍵出現(xiàn)的菜單中可找到它); 通過點擊目標窗口的標題欄、使用AltTab進行切換或者其他方法來激活窗口(Window Spy將一直是最上層窗口); 移動鼠標到目標窗口上需要進行點擊的位置,記下此時Window Spy中顯示的坐標值(或者按Shift-Alt-Tab來切換到Window Spy的窗口,它顯示的坐標值將停止變化,因此可以方便用戶復制和粘貼坐標值) 在 MouseClick(鼠標點擊) 命令中使用上面獲得的坐標值,例如:MouseClick, left, 112, 223 如果只需要移動鼠標而不用點擊的話,請使用 MouseMove(鼠標移動)命令。要拖動鼠標,請使用 MouseClickDrag(鼠標拖動)命令。我現(xiàn)在用的一個登錄代碼:/d:Send, wildtoy Tab 123456 Enterreturn;你在百度登錄框里只要輸入/d,它就會把輸入wildtoy,切換到密碼輸入框輸入123456,最后回車,為什么要用/號呢,無論你用什么都行,你就是:aa:也可以,問題是你不想打字打到aa的時候突然變成自己的用戶名和密碼吧:/mail:;經(jīng)常要輸入電郵地址,電郵太長怎么辦,像這樣以后只要輸入/mail回車或空格,就會變成電郵了.下面附上常用的一些按鍵列表鼠標(Windows NT/2000/XP或更高級版本)LButton - 鼠標左鍵RButton - 鼠標右鍵MButton - 鼠標中鍵或滾輪WheelDown - 鼠標滾輪向下滾動(向著身體的方向)WheelUp - 鼠標滾輪向上滾動以下定義僅支持Windows 2000/XP及更高級版本:XButton1 - 只有某些鼠標才會有這個按鍵XButton2 - 只有某些鼠標才會有這個按鍵鍵盤注意:單個字母鍵和數(shù)字鍵的名字就是它上面的符號,因此下面將不列出來,例如 b 就是代表 b鍵,而 5 就是5鍵Space - 空格鍵TabEnter (或 Return)Escape (或 Esc)Backspace (或 BS) - 退格鍵Delete (或Del)Insert (或 Ins)HomeEndPgUpPgDnUpDownLeftRightScrollLockCapsLockNumLockNumpadDiv - (小鍵盤上的)除號鍵/斜杠NumpadMult - (小鍵盤上的)乘號鍵/星號NumpadAdd - (小鍵盤上的)加號鍵NumpadSub - (小鍵盤上的)減號鍵NumpadEnter - (小鍵盤上的)回車鍵當Numlock的狀態(tài)是關閉時:NumpadDelNumpadInsNumpadClear - 在大多數(shù)鍵盤上就是指Numpad5這個按鍵NumpadUpNumpadDownNumpadLeftNumpadRightNumpadHomeNumpadEndNumpadPgUpNumpadPgDn當Numlock的狀態(tài)是打開時:Numpad0Numpad1Numpad2Numpad3Numpad4Numpad5Numpad6Numpad7Numpad8Numpad9NumpadDot - 小數(shù)點(句點)從 F1 到 F24 - 大多數(shù)鍵盤上面的那一排功能鍵AppsKey - 用來調(diào)用右鍵菜單的按鍵LWin - 左邊的Win鍵(徽標鍵)RWin - 右邊的Win鍵(徽標鍵)Control (或 Ctrl) AltShift注意: 在大多數(shù)情況下,下面這六個按鍵是不支持用在 Windows 95/98/Me系統(tǒng)上的,請使用上面列出的按鍵代替:LControl (或 LCtrl) - 左邊的control鍵RControl (或RCtrl) - 右邊的control鍵LShiftRShiftLAlt - 左邊的Alt鍵RAlt - 注意:如果您的鍵盤布局是用了AltGr鍵而不是RAlt(即沒有右邊的Alt鍵),您可能就要通過 ! 這樣的格式來令它變成熱鍵前綴,詳細說明請看 這里。此外,, LControl & RAlt: 將使得AltGr鍵本身變成熱鍵。PrintScreenCtrlBreakPauseBreak小鳥學AHK(3)之創(chuàng)建腳本2008-07-03 18:25這幾天補數(shù)據(jù)和找工作。主要還是因為看到了別的AHK愛好者的博客,受打擊了??磥砦疫€真的是鳥中鳥啊。到底繼續(xù)不繼續(xù)下去呢,反正也沒人瞅,算是意志的鍛煉吧今天我們講創(chuàng)建腳本有人問了,裝了軟件學了前兩課的代碼了,往哪寫啊,怎么實現(xiàn)功能啊,別急有三種方式:1.建個記事本文件,改擴展名為ahk,比如test.ahk ,用記事本軟件打開編輯就行了。雙擊這個文件就可以運行,不過每運行一個腳本都會在托盤中多出一個圖標。2.把test.ahk編譯成exe文件,這樣你就可以發(fā)給朋友了,打開 AHK 所在文件夾下的 Compiler 文件夾,雙擊里面的 Ahk2Exe.exe。然后依次瀏覽文件:要編譯的 AHK 文件,編譯后的 exe 文件名,編譯后的 exe 要顯示的圖標。其他一般不用輸入。如下圖(呵呵沒圖,誰想看圖說聲我發(fā)上來)選擇好后,點擊 convert。3.打開 AHK 所在的文件夾,新建一個文本文件:AutoHotKey.ini。用記事本編輯,你可以把你所有的腳本都寫在里面??偨Y:1和2會在右下角出現(xiàn)很多圖標,暈哦哪個是哪個啊。3是很整潔了就一個文件實現(xiàn)所有功能,但若是代碼很長很長那編輯起來也會很麻煩很麻煩。咋辦吶?#Include 用這個,意思是載入文件,作用相當于把那個文件內(nèi)容復制到當前位置比如我的AutoHotKey.ini里面的內(nèi)容是#Include pm.ahk ; 同目錄下鬧鐘代碼#Include myahk/tc.ahk ; 同目錄下的myahk目錄下的total commander軟件有關的代碼#Include C:/game.ahk ;C盤根目錄下的游戲中用的代碼,這樣是不是整潔多了,既保持了一個圖標,也方便了每個腳本的編輯與整理,當然我建議還是集中放到一個目錄下了今天的課很簡單,但很重要哦如果有比我還菜的鳥,一定要在下面通知我,讓我也高興一下小鳥學AHK()之高級教程:熱鍵2008-07-10 23:52有朋友問了一些熱鍵和熱字符串的高級用法,本來我是想給如我一般的菜鳥一個入門的介紹,既然問到了,不回答面子過不去,可是俺也不會啊回頭惡補了一下,發(fā)現(xiàn)要寫成簡易的文字還真是難,因為原文已經(jīng)非常簡易了。只好原般照抄下來,關于熱鍵和熱字符串的簡單用法看()就可以了,想深入系統(tǒng)學習的有志高手看下面吧。原文來自yonken翻譯的AHK的幫助文檔。下章發(fā)熱字符串,很想快點過去這段,給大家發(fā)些應用的小腳本。別著急啊熱鍵,也就是快捷鍵,可以用來觸發(fā)某些指定的動作(例如運行一些程序或 宏指令(Macro)。下面這個例子中Win+N被設置為運行記事本的一個快捷鍵,井號#代表Win鍵(徽標鍵):#n:Run Notepad ;“開始運行”中可運行的程序都可以使用,其他程序需要指定路徑return上面的最后一行的return(返回) 用以表示此熱鍵的結束。不過,如果此熱鍵只需要處理一行命令的話,那一行命令就可以放到雙冒號的右邊(不需要空格),換句話來說就是 return(返回) 可以省略了:#n:Run Notepad要使一個熱鍵有更多調(diào)節(jié)鍵,只需把它們連續(xù)列出即可。下面這個例子中 ! 表示Control+Alt:!s:MsgBox 您按了Ctrl+Alt+S.return值得注意的是,和其它常用的熱鍵一樣,它們是有一個先后順序的,例如上面的例子中,如果先按下S鍵然后才按Control和Alt將不能觸發(fā)熱鍵。舉個例子來說,我們用Ctrl+Alt+Del來調(diào)出Windows任務管理器,同樣也是有個順序的,您可以自己實踐一下,以下不再說明。您可以使用下列調(diào)節(jié)鍵來定義熱鍵:符號相關描述#Win (徽標鍵)!AltControl+Shift&可用在兩個按鍵(包括鼠標按鍵)之間來組合它們成為一個自定義的熱鍵。詳細說明請看 下面。使用成對按鍵(如Alt、Ctrl、Win)中左邊的一個。例如!a 和 !a 差不多,但是使用成對按鍵(如Alt、Ctrl、Win)中右邊的一個。同上,此功能不支持 Windows 95/98/ME。!AltGr。如果您的鍵盤布局中AltGr鍵代替了右邊的Alt鍵,這一系列的符號就是用來表示AltGr鍵的(僅支持Windows NT/2k/XP或更高級版本)。例如:!m:MsgBox 您按了AltGr+m.!m:MsgBox 您按了左邊的Control+左邊的Alt+m.*通配符:只要包含有指定調(diào)節(jié)鍵的按鍵被按下即觸發(fā)熱鍵,經(jīng)常用在 映射(Remap) 按鍵或按鈕的時候。例如:*#c:Run Calc.exe ; Win+C, Shift+Win+C, Ctrl+Win+C等等,只要有Win+C即觸發(fā)熱鍵。*ScrollLock:Run Notepad ; 按ScrollLock后運行記事本,不管是否同時有control/alt/shift/win按鍵按下。此功能不支持Windows 95/98/ME。如果自定義的熱鍵和系統(tǒng)/程序原有的熱鍵相同,則這些熱鍵同時觸發(fā)。在以下的兩個例子里,當用戶按下鼠標右鍵后,自定義的熱鍵功能和系統(tǒng)/程序原有的右鍵菜單將同時觸發(fā):RButton:MsgBox 您按下了鼠標右鍵RButton & C:MsgBox 您按下了C鍵和鼠標右鍵需要說明的是:在上面的例子中若沒有(即RButton)則將屏蔽原有的右鍵菜單,另外,一些專門用來代替 alt-tab 的按鍵將總是忽略這一設置,此功能不支持Windows 95/98/ME。$此符號只有當腳本使用 Send(發(fā)送) 命令發(fā)送的按鍵正好包含有熱鍵本身的時候才會用到。在不同的系統(tǒng)上使用$前綴運行起來會有一些變化:在Windows NT4/2k/XP 或更高級版本:將強制使用 鍵盤鉤子(keyboard hook) 來執(zhí)行熱鍵。它的副作用就是阻止了 Send(發(fā)送) 命令觸發(fā)熱鍵。使用$ 前綴與使用指定的 #UseHook 等效。在Windows 95/98/Me 以及AutoHotkey v1.0.23以上: 在其 線程(thread) 的執(zhí)行過程中熱鍵將失效,此后才重新生效。它的副作用是就算 #MaxThreadsPerHotkey 被設置為大于1也跟設置為1一樣。UPUP通常寫在一個按鍵名后面,用來表示當某按鍵被松開后觸發(fā)熱鍵而不是在其被按下后。下面的例子把左邊的Win鍵映射(替換)成左邊的Control鍵:*LWin:Send LControl Down*LWin Up:Send LControl Up ; 這樣當左邊的Control鍵壞了的時候就可以用左邊的Win鍵來代替它。注意:并非完全替代,例如當按下LWin+Alt+Del的時候,并不會像按下Ctrl+Alt+Del一樣出現(xiàn)Windows任務管理器。Up 還可以配合一些常用的熱鍵,例如: !r Up:MsgBox 您按下并松開了Ctrl+Alt+R.此功能不支持 游戲操縱桿按鈕。同時還要求在v1.0.28版本以上以及 Windows NT4/2000/XP或更高級版本才能有效。(查看 按鍵列表 獲得完整的鍵盤/鼠標/游戲操縱桿按鍵名列表)可以把熱鍵標記當作是普通標記來使用:您可以使用 Gosub/Goto 命令轉到指定的標記,也可以定義多個熱鍵標記到相同的子程序,例如:Numpad0:Numpad1:MsgBox 按下Control+Numpad0或Control+Numpad1都會顯示此信息。return如果一個熱鍵沒有定義任何動作,則這個按鍵或組合鍵將被屏蔽。下面的這個例子就屏蔽了右邊的Win鍵:RWin:return僅在Windows NT, 2K, XP及其上平臺有效的功能:您可以使用 & 連接兩個按鍵來自定義一個組合熱鍵。在下面的這個例子里,您可以按著小鍵盤上的0然后再按下1來觸發(fā)熱鍵:Numpad0 & Numpad1:Run NotepadNumpad0 & Numpad2:Run Calc在上面的例子里,Numpad0 是個前綴按鍵。正如下面的這個例子一樣,前綴按鍵也可以設定其自己的動作,但只有當按鍵被松開的時候才被觸發(fā),而且在按下按鍵的時候不會更改任何熱鍵:Numpad0:WinMaximize A ; 最大化激活窗口。滾動鼠標滾輪(向上滾動或向下滾動)可以被定義為熱鍵,例子:MButton & WheelDown:MsgBox 您按著鼠標中鍵同時向下滾動了滾輪。!WheelUp:MsgBox 您按著Control+Alt同時向上滾動了鼠標滾輪。還有一個功能是控制Numlock,Capslock,或Scrolllock這些鍵,使其保持開著或關閉的狀態(tài)。例如:SetNumlockState, AlwaysOnWindows內(nèi)置的熱鍵如Win-E(#e)和Win-R(#r)可通過在腳本中為它分配其他動作而達到屏蔽的目的。詳細說明請查看 撤銷或屏蔽熱鍵 部分。取替 Alt-Tab: AltTab和ShiftAltTab是兩個比較特殊的命令,只跟熱鍵結合使用才會有用,它們是用來取替Alt-Tab和Alt-Shift-Tab的。例如, 在下面這個例子里,你可以使用左邊的Alt結合鼠標滾輪上下滾動來代替Alt-Tab和Alt-Shift-Tab進行切換。LAlt & WheelDown:AltTabLAlt & WheelUp:ShiftAltTab類似地,只用鼠標也完全可以取替Alt-Tab,像下面一樣,按下中鍵將顯示切換界面,然后滾動鼠標滾輪即可進行切換,再次按下中鍵即可切換到選定窗口并退出切換界面:MButton:AltTabMenuWheelDown:AltTabWheelUp:ShiftAltTab如果您要用右手在鍵盤上切換(代替alt-tab),比較方便的方法是這樣:RControl & RShift:AltTab ; 按住右邊的Ctrl鍵和Shift鍵來切換RControl & Enter:ShiftAltTab ; 按住右邊的Ctrl鍵和回車鍵來切換()The other Alt-tab actions available are:1) AltTabAndMenu: 如果存在切換界面則向右切換,否則顯示切換界面。2) AltTabMenuDismiss: 關閉切換界面?,F(xiàn)在您該知道以上所有關于Alt-tab的命令都必須像上面的例子一樣分配給熱鍵,否則它們將無效。注意由于Numlock鍵有開啟/關閉兩種狀態(tài),使得每個小鍵盤上的按鍵可在不同狀態(tài)下觸發(fā)兩個不同的熱鍵。當然,也可以把它們設置為觸發(fā)同一個熱鍵而不管Numlock的狀態(tài)如何:NumpadEnd:Numpad1:MsgBox, 熱鍵將忽略Numlock的狀態(tài)而觸發(fā)return如果()結合前綴按鍵使用過一次,則含有那個前綴按鍵的熱鍵都會向激活窗口發(fā)送前綴按鍵的動作。例如在下面的例子里,鼠標右鍵(RButton)就是前綴按鍵,上面的第一行命令規(guī)定了在按著鼠標右鍵的同時按下左鍵將觸發(fā)熱鍵而顯示對話框,而且由于的存在,右鍵命令也同時觸發(fā)(例如顯示右鍵菜單,如果有的話);需要注意的是第二行的命令規(guī)定了在按著鼠標右鍵的同時往上滾動鼠標滾輪將觸發(fā)熱鍵而顯示對話框,而且由于沒有,右鍵命令將被屏蔽(例如屏蔽右鍵菜單) ,然而當此腳本執(zhí)行的時候,右鍵命令依然會觸發(fā)(例如不該出現(xiàn)的右鍵菜單出現(xiàn)了),因此需要特別注意這一點。RButton & LButton:MsgBox 您按著右鍵同時按下了左鍵。RButton & WheelUp:MsgBox 您按著右鍵同時往上滾動了鼠標滾輪。Suspend(中斷) 命令可以臨時關閉除了指定熱鍵以外的所有熱鍵。在腳本運行的過程中,熱鍵可以通過 Hotkey(熱鍵) 命令動態(tài)地創(chuàng)建。Hotkey命令還可以修改、關閉或開啟腳本中已有的熱鍵。游戲操縱桿熱鍵目前不支持像 (Control)和# (Win)這樣的調(diào)節(jié)鍵前綴。不過,您可以使用 GetKeyState 來模擬它的效果,如下面這個例子:Joy2:GetKeyState, ControlState, Controlif ControlState D ;在這里D表示按鍵被按下 return ; 表明如果按鈕未被按下則沒有動作MsgBox 您按著Control鍵同時按下了游戲操縱桿的第二個按鈕。return這個程序有點類似 多線程, 它允許在前一個熱鍵子程序仍在運行的時候運行新的熱鍵,例如上面有一個熱鍵被觸發(fā)并顯示 MsgBox(對話框),新的熱鍵仍可以運行。小鳥學AHK()之高級教程:熱字串和自動擴展2008-07-10 23:58下面很麻煩,簡單的用法看()就可以了,其實就是兩個雙冒號之間插入縮寫詞,其后加上觸發(fā)結果,擴展就是第一個雙冒號間可以加參數(shù)改變具體的觸發(fā)行為,高手您慢慢看(原文來自yonken翻譯的AHK的幫助文檔。熱字串主要用來實現(xiàn)自動擴展,例如當你鍵入一些單詞的縮寫時自動擴展成完整詞句,不過熱字串也同樣可以用來執(zhí)行任何腳本動作,在這一方面它和 熱鍵 類似,但它們由更多的字符組成,因此才被稱為熱字串。要定義一個熱字串,只需要在兩個雙冒號之間插入縮寫詞,其后加上觸發(fā)結果(替換文字)即可。例如::btw:by the way在上面的例子里,當鍵入btw這個縮寫之后,再鍵入 結束符(ending character)即觸發(fā)熱字串,使其自動擴展為by the way。結束符可以是指空格、句號或回車(如果要直接觸發(fā)熱字串而不必鍵入結束符,可以使用 * 選項)注意:后面的語句不能是中文,否則會變成亂碼! :( 若要使用中文語句,可參考下面的 方法:這個例子中熱字串的作用就是自動地把btw刪除然后替換為by the way從而實現(xiàn)所謂的自動擴展。另外,正如上面所說,熱鍵串還可以用來定義其他動作,不過記住要把相關命令置于熱鍵串之下::btw:MsgBox 您鍵入了btw。;鍵入btw及結束符將顯示此對話框,而btw將被刪除(請看下面的說明)return盡管上面的熱字串不屬于自動擴展的一類,但用戶鍵入的縮寫詞仍會被自動刪除,這是因為它的默認設置為自動發(fā)出退格命令。如有需要可以使用 b0 選項 來取消這一設置。結束符在默認狀態(tài)下,用戶必須在鍵入熱字串的縮寫詞后再鍵入一個縮寫詞,使用 * 選項 即可免去這一步。結束符默認是指這些字符:-():;/,.?!n t (注意:n代表回車,t代表Tab,在n和 t之間還有一個空格)。您可以仿照下面的語句來更改這一設置:#Hotstring EndChars -():;/,.?!n t ;右邊的所有字符串都被定義為結束符選項熱字串的默認行為可以有兩種方法改變:1. 使用 #Hotstring 命令,用它結合下面的選項進行的設置會影響到其下腳本中的所有熱字串,例如:#Hotstring c r ; 區(qū)分大小寫并且“發(fā)送原文”; 2. 在熱字串的前兩個冒號之間插入一個或多個選項,例如::c*:j: ; 區(qū)分大小寫并且取消結束符(也就是說不用結束符即可觸發(fā)熱字串)。 注意:當使用超過一個選項(下面列出)的時候,空格鍵可被隨意添加到這些選項之間(而不會有影響)。* (星號):不再需要結束符(例如空格和回車等等)來觸發(fā)熱字串。使用 *0 來恢復。在下面的例子里,當號一被按下即觸發(fā)熱字串從而自動擴展縮寫::*:yk:? (問號):鍵入任何含有縮寫詞的詞句都會觸發(fā)熱字串。舉個例子,對于 :?:al:airline 這個熱字串來說,鍵入含有“al”的“practical”這個單詞將會生成“practicairline”(只是al被替換成了airline而不是整個單詞,注意到了嗎?)。 使用 ?0 (問號后面一個零)來恢復。B0 (B后面接一個零): 自動退格刪除縮寫詞的功能將被禁止。取消此功能后若想恢復可使用 B 選項。C: 區(qū)分大小寫:用戶鍵入的縮寫詞必須和腳本中的嚴格一致(也就是說區(qū)分大小寫)。使用 C0 (C后面接一個零)來取消此功能。注意:如果您需要為同一個縮寫詞分開定義為兩個只有大小寫格式不同的熱字串的話,那么請在其中一個熱字串的前兩個冒號之間插入空格,用以和另外一個熱字串區(qū)分。這樣做是有必要的,因為熱字串屬于標識,而每個標識必須是唯一的。在下面的這個例子里,第一個熱字串使用了一個額外的空格來與第二個區(qū)分::c :ceo:chief executive officer :c:CEO:Chief Executive OfficerC1: 取消匹配大小寫。使用這個選項來使得那些自動擴展的熱字串對大小寫不再敏感(即輸出結果將和熱字串中定義的完全一致)。使用C0 來恢復。熱字串默認狀態(tài)下是匹配大小寫的,如果用戶鍵入的縮寫詞全部都是大寫則輸出的結果也全部大寫;如果鍵入的第一個字母是大寫則輸出的第一個字母也會是大寫;其他情況的輸出結果將和熱字串中定義的完全一致。下面針對此熱字串:c :ceo:chief Executive officer來詳細說明:若鍵入CEO加結束符則輸出結果為CHIEF EXECUTIVE OFFICER(全部字母都大寫);若鍵入Ceo/CEo/CeO等則輸出結果為Chief Executive officer(也就是說只是第一個字母改為大寫而已);其他格式的輸出結果都是和熱字串原來定義的一致,也就是chief Executive officer。Kn: 按鍵延遲;通常來說幾乎所有使用自動退格和自動擴展功能的熱字串的按鍵延遲都是0。設置為零是被推薦的,因為這樣既迅速而又可以很好地配合其它進程(由于內(nèi)部設置了 Sleep 0)。若需要設置延遲,則給變量 n 賦值即可。用 -1 來表示完全沒有延遲,如果您的CPU經(jīng)常性的處于重負荷狀態(tài)的話,這會使自動擴展的速度加快。O: 當自動擴展的文字生成的時候省略結束符。這在你需要結束符來觸發(fā)熱字串而又不想讓它輸出到目標的時候非常有用。例如:通常我們是這樣設置熱字串的:ar:aristocrat,當鍵入“ar“和空格會輸出“aristocrat ”(它畫蛇填足地在后面添加了空格符);而當使用O選項后也即o:ar:aristocrat ,鍵入“ar”和空格會輸出“aristocrat”,注意它是沒有空格符在后面的。使用O0 (字母O后面接一個零)來恢復。Pn: 設置熱字串的 優(yōu)先級 (例如 P1)。此選項對實現(xiàn)自動擴展功能的熱字串沒有影響。R: 發(fā)送替換文字的原文。也就是說熱字串將完全一致地輸出原文而不會解釋Enter或c這些特殊的字符串,從而避免那些有 延續(xù)部分(continuation section) 的熱字串自動發(fā)出回車或Control-C等等命令, 使用 R0 (R后面接一個零)來恢復。Z v1.0.30+: 每觸發(fā)一次熱字串則重設一次熱字串識別器。這里的意思是腳本將會在每次熱字串觸發(fā)后消除對前一次鍵入內(nèi)容的識別并等待新的熱字串。舉個例子來說明一下,下面的熱字串沒有Z選項,所以鍵入111后熱字串將會觸發(fā)兩次而不是一次::b0*?:11:Send xxreturn只要在b0前面插入一個Z,就必須鍵入1111而不是111來觸發(fā)兩次熱字串。 使用 Z0 (Z后面接一個零)來恢復。大段替換文本在 v1.0.32以上版本中,通過添加 延續(xù)部分(continuation section),熱字串可以輸出大段的替換文本。例如::text1:(Any text between the top and bottom parentheses is treated literally, including commas and percent signs.By default, the hard carriage return Enter between the previous line and this one is also preserved. Also, the indentation Tab to the left of this line is preserved by default.See continuation section for how to change these default behaviors.)特別需要注意的是,延續(xù)部分不能直接使用中文字符,否則會輸出亂碼,解決方法請參考下面。延續(xù)部分的存在同時使得熱字串從默認模式變?yōu)?原文模式。留意上面的文字,Enter和Tab都不會被認為是按鍵指令,要撤銷這一設置的唯一一個方法是在每一個有延續(xù)部分的熱字串中使用 r0 選項。注意熱字串輸出的語句是不直接支持中文的,不過也可換個思路,借助clipboard命令賦予剪貼板自定義的文字,然后通過發(fā)送Ctrl+V的方法來輸出中文,例如::sbs:clipboard = 順便說一下Send, vReturn目前類似%MyVar%這樣的變量參數(shù)不支持在替換文本中使用。要使用它們就不能把熱字串設為自動擴展而是在縮寫詞之下使用 Send(發(fā)送) 命令并用一行Return接上。內(nèi)建變量 A_EndChar 就是那些用以觸發(fā)最近的非自動擴展類的熱字串的結束符。如果不需要結束符來觸發(fā)(*選項的作用),那么它的值為空。此變量對于那些使用發(fā)送(Send)命令的熱字串或那些鍵入不同結束符而有不同行為的熱字串來說比較有用。要發(fā)送結束符自身,需要使用SendRaw %A_EndChar%(之所以使用 SendRaw(發(fā)送原文) 是因為類似 ! 這樣的字符不能通過普通的發(fā)送(Send)命令正確發(fā)送。盡管在熱字串定義式中的逗號、百分比符號和單冒號不需要進行 轉義,但是那些有空格和空位(Tab)在其左邊的重音符和分號就需要轉義。請查看 轉義列表 獲得詳細的列表。盡管 Send(發(fā)送)命令的語法 被支持用在自動擴展文本部分(除非用了原文(raw)選項),但熱字串的縮寫詞本身不能用它來表示。也就是說,在縮寫詞里不用ENTER來表示回車鍵或用SPACE來表示空格鍵。取而代之的方法是使用 n 來表示回車以及用 t 來表示跳格(Tab)(請查看 轉義列表 獲得詳細的列表)。 下面舉個例子說明::*:okENTER:no problem ; 鍵入ok再加一個回車鍵不能觸發(fā)熱字串,除非鍵入完整的okENTER。:*:okn:no problem ; 鍵入ok再加一個回車鍵即可觸發(fā)熱字串。熱字串定義了空格和空位(Tab)將被直接認作是字符本身,例如下面的熱字串將產(chǎn)生兩種不同的結果::btw:by the way:btw: by the way ; 比上面多了一個空格,那么這個空格也會嚴格地輸出來。熱字串的縮寫詞不可以超過30個字符。如果長度超出了程序會提醒您的。熱字串的替換文本也有AutoHotkey最大行數(shù)的限制,但它最多可以達到16,383個字符。不過也可以通過一個巧妙的方法來突破這一限制,那就是在熱字串中使用 Send %自定義變量% 。 例如您可以預先設置自定義變量并賦值為超過限制部分的字符,然后在熱字串中調(diào)用即可。熱字串的先后順序決定了它們的優(yōu)先級,換句話來說就是如果有超過一個的熱字串符合用戶鍵入的內(nèi)容,則只有排在最前面的那個熱字串才會生效。運行腳本時用戶進行的任何退格行為都將被視為企圖核對熱字串。但是,如果用戶在編輯器中使用了上/下/左/右箭頭、PageUp、PageDown、Home和End這些按鍵時將導致熱字串識別重設,也就是說消除對這一次鍵入內(nèi)容的識別并等待新的熱字串。即使處于激活狀態(tài)的窗口忽略用戶的鍵擊行為熱字串也依然可以輸入,也就是說就算替換文本不可見熱字串還是會被觸發(fā)。此外,退格鍵也還是會撤銷最近的鍵擊,盡管您看不到效果。可以使用 Gosub 或 Goto 來轉到指定的熱字串標識(Label), 只要在標識名前面加上一對冒號即可。不過,如果在冒號之間沒有選項符則必須對雙冒號進行轉碼。例如: Gosub :btw盡管熱字串不被監(jiān)控而且在不可見的 輸入(Input) 命令生效期間將不會被觸發(fā),但可見的輸入是可以觸發(fā)它們的。熱字串不會被AutoHotkey腳本發(fā)出的鍵擊行為觸發(fā)。這樣避免了發(fā)生熱字串反復觸發(fā)導致無限循環(huán)的可能。在某些方面來說 輸入(Input) 命令比熱字串更加靈活。例如,它允許在激活窗口中鍵擊的不可見(例如游戲)。它還支持像Escape鍵這樣的非字符式結束鍵。所有包含熱字串的腳本都將自動使用 鍵盤鉤子(keyboard hook)。熱字串和熱鍵的相同反應: 它們都會受到 中斷(Suspend) 命令的影響; 都服從 #MaxThreads 和 #MaxThreadsPerHotkey (除了#MaxThreadsBuffer)的設置; 含有熱字串的腳本都將自動 持續(xù)(persistent); 非自動擴展類的熱字串運行時將會創(chuàng)建新 線程(thread),此外它們還將更新內(nèi)建的熱鍵變量,例如 A_ThisHotkey 。 小鳥學AHK(6)之鼠標動作2008-08-27 09:32下面開始講課,主要就一個命令,學好它基本就能實現(xiàn)簡單的大部分行為了。認真聽講啊。click 30,40 right 2 r (1) (2) (3) (4)(1)坐標,可用函數(shù)如 %x%,%y%,省略則默認為當前位置。(坐標默認的是相對于當前窗口,不是屏幕,當然這個默認是可以改的,你要改么?嗯?你有這么厲害?那別看了)(2)right 右鍵,left左鍵,middle 中鍵,省略則默認left(3)鼠標行為: 數(shù)字表示點擊次數(shù):省略則默認為1;寫0的話則表示移動鼠標(不點擊再加上坐標當然是移動了,什么?你不加坐標?別逗電腦了); down為按下,up 為彈起,用這兩個組合起來實現(xiàn)拖動。(4) r ,表示坐標是以當前鼠標位置為原點的相對坐標,省略則默認是絕對坐標,原點在哪?窗口左上角啊,前面剛說完。舉例:click ;當前位置鼠標單擊左鍵click 2 ;當前位置鼠標雙擊左鍵click 30,40 0 ;移動鼠標到30,40click 30,40 downclick 50,60 up ;這兩行組合在一起即是拖動某東東高手進階一,滾輪click wheelup 2 ; 滾輪向上滾2次,數(shù)字省略則默認為1次,如click wheeldown ; 滾輪向下滾一次. wheelup 可以寫成WU,相對應的就是WD了。不過有些程序不認數(shù)字,所以最好采取兼容性更 高的循環(huán)法,如loop 5 click WD ; 向下滾5次二,sendmode模式是為了實現(xiàn)特殊點擊,而且兼容性更高,要習慣多用這種模式哦,比如要實現(xiàn)ctrl+鼠標雙擊send click 100,200 2三,設置延遲和鼠標移動速度有時為了讓觀眾能看清楚鼠標動作,有必要設置一下速度SetDefaultMouseSpeed 30; 默認的是2 ,可以從0調(diào)到100,越小越快,調(diào)0您的鼠標就是博爾特了每個鼠標動作結束之后,為了能讓電腦反應過來做下個動作,默認都有個延遲,默認是10毫秒Set

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論