黃易群俠傳M脫機外掛應用程式黃易神行
22359
48

[分享] AUTOIT輕鬆入門系列1

安南 發表於 2007-7-24 14:50:05 | 只看該作者 回帖獎勵 |倒序瀏覽 |
前言:據我瞭解需要編寫AutoHotkey/AutoIt腳本來實現自動化操作的用戶很多都是網管,其它則可能是一些個人用戶,他們一般都具有相當的技術水平,而且都希望能借助腳本來完成某些以往需要人工操作的重複性勞動,但限於語言條件上的限制可能對官方的幫助文檔有較難理解之處。為方便讀者,我將從最簡單的說起,每個示例盡可能同時給出相應的AHK和AU3版本代碼。本文將盡可能用較通俗的語言描述,但並不打算講解語法基礎,所以不一定適合新手閱讀。

文中涉及到的AHK/AU3版本:
AutoHotkey
1.0.44 .08
AutoIt
3.1.1

一、關於腳本
1、什麼是腳本?
  1. 這是個非常「流行」的術語了,通俗而言腳本([size=10.5pt]Script)一般都是指根據某種語法規則編寫的具有特定格式的文本文件。可能大家已經聽說過很多種腳本:[size=10.5pt]VBScript、[size=10.5pt]JScript、[size=10.5pt]PHP、[size=10.5pt]ASP、[size=10.5pt]JSP、[size=10.5pt]CGI、[size=10.5pt]CS腳本,甚至遊戲外掛腳本。[size=10.5pt]
  2. 這些腳本文件都是可執行文件,可執行相應的操作。[size=10.5pt]
  3. AHK 腳本文件擴展名:[size=10.5pt]*.ahk
  4. AU3 腳本文件擴展名:[size=10.5pt]*.au3
複製代碼
2、腳本和程序的不同?
  1. 嚴格來說,所謂「程序」就是指以各種編程語言(比如說[size=10.5pt]C/C++/C#/Delphi)編寫、由編譯器編譯好後的二進制文件,一般就是機器代碼,可由系統執行。而腳本則是只是些純文本文件,包含了各種定義好的命令,這一點很像批處理文件。這樣,我們得出一個簡單的結論,那就是用戶一般無法獲得「程序」的源代碼,我們只能進行反彙編把它逆向還原為彙編語言代碼(或其它),當然,也有些「程序」是可以獲得源代碼的(比如[size=10.5pt]Java);腳本則是用戶可直接查看的代碼文件,而[size=10.5pt]AHK/AU3則提供了把腳本文件「轉換」成[size=10.5pt]exe文件的方法。[size=10.5pt]
複製代碼
3、腳本如何運行?
  1. 腳本是「解釋性」的語言,它的運行依賴一個「解釋器」,由這個解釋器來「翻譯並解釋」腳本的每條命令(或者說代碼),然後執行相應操作。如果不嚴格定義的話,[size=10.5pt]HTML和[size=10.5pt]Java都可以認為是解釋性語言。[size=10.5pt]AHK/AU3的主程序(分別是[size=10.5pt]AutoHotkey.exe和[size=10.5pt]AutoIt3.exe)就是它們的「解釋器」,上面提到腳本可「轉換」成可脫離相應的解釋器而獨立運行的[size=10.5pt]exe可執行文件,而我們還可以使用相應的工具把它們「還原」成腳本文件,由此我們完全可以這麼理解:腳本代碼是被「壓縮」到這個[size=10.5pt]exe文件中,解釋器也是在裡面,在運行[size=10.5pt]exe時實際上是先「解壓」腳本代碼然後運行解釋器並解釋該腳本。[size=10.5pt]
複製代碼
4、如何創建腳本?
  1. 使用資源管理器的右鍵菜單即可創建相應腳本文件,或者新建一個文本文件後改擴展名即可。[size=10.5pt]
複製代碼
5、稍微介紹一點語法規則?
  1. [size=10.5pt]A)對[size=10.5pt]AHK而言,每個內建的功能都是以「命令」的形式提供:[size=10.5pt]
  2. [size=10.5pt]Command, param1, param2,…
  3. 而[size=10.5pt]AU3則以「函數」的形式提供:[size=10.5pt]
  4. [size=10.5pt]Function(param1, param2, …)
  5. 命令或函數中被符號「[size=10.5pt][」和「[size=10.5pt]]」圍住的參數是可選參數,表示在使用這些命令或函數時可省略它們(不給出具體數值)。[size=10.5pt]
  6. 若某個參數含有空格,則最好使用雙引號圍住該參數。[size=10.5pt]
  7. [size=10.5pt]B)解釋器自上而下(從第一行到最後一行)「解釋」腳本的每行語句,除非遇到「[size=10.5pt]Return」、「[size=10.5pt]Goto」、「[size=10.5pt]Gosub」、「[size=10.5pt]Exit」等語句、函數、熱鍵或其它能使腳本「跳」到某個標識符的條件成立。[size=10.5pt]
  8. C)關鍵字和標識符(包括變量名、命令名、函數名等)都不區分大小寫。
複製代碼
二、運行程序或打開文件
1、運行程序
  1. Run t命令或者函數用來運行外部可執行文件,AHK還可利用它來直接打開文件。
  2. [size=10.5pt]AHK:[size=10.5pt]
  3. Run, 目標文件 [, 工作目錄, Max|Min|Hide|UseErrorLevel, 輸出PID變量]
  4. AU3:
  5. Run ( "文件名" [, "工作目錄" [, 標誌]] )
  6. 【示例 [size=10.5pt]2.1.1 】[size=10.5pt]
  7. AHK:
  8. [size=10.5pt]Run, Notepad.exe
  9. [size=10.5pt]AU3:[size=10.5pt]
  10. [size=10.5pt]Run("Notepad.exe")
  11. 上面的示例中都沒有給出程序「[size=10.5pt]Notepad.exe」的路徑,為什麼仍能執行?這是因為它們都會自動在腳本所在目錄下搜尋目標文件,如有則運行,否則就到系統文件夾([size=10.5pt]%PATH%)中搜尋。[size=10.5pt]
  12. 注意:[size=10.5pt]
  13. [size=10.5pt]A)某些程序必須給定「工作目錄」才能成功運行![size=10.5pt]
  14. [size=10.5pt]B)給出完整的文件路徑有助於輕微提高程序的可靠性。[size=10.5pt]
  15. [size=10.5pt]C)[size=10.5pt]AHK的[size=10.5pt]Run命令可以用來運行程序和直接打開文件,而[size=10.5pt]AU3的[size=10.5pt]Run函數則只能用來運行程序(可執行文件)或傳遞參數讓某個程序打開目標文件。[size=10.5pt]
  16. 當然,運行程序的功能還不僅僅是這麼簡單,我們還可以指定運行程序的初始狀態,比如讓運行的記事本窗口以最大化狀態顯示(或者最小化、隱藏):[size=10.5pt]
  17. 【示例 [size=10.5pt]2.1.2 】[size=10.5pt]
  18. [size=10.5pt]AHK:[size=10.5pt]
  19. [size=10.5pt]Run, Notepad.exe, , Max
  20. [size=10.5pt]AU3:[size=10.5pt]
  21. [size=10.5pt]Run("Notepad.exe", "", @SW_MAXIMIZE)
  22. [size=10.5pt]
複製代碼
2、打開文件
  1. 前面已經提到,[size=10.5pt]AHK的[size=10.5pt]Run命令可以直接打開文件,而[size=10.5pt]AU3的[size=10.5pt]Run函數則只能用來運行程序,因此在打開文件的方式上有點不同:[size=10.5pt]AHK腳本中可直接給出目標文件,而[size=10.5pt]AHK將自動運行該文件的關聯程序來打開它;而[size=10.5pt]AU3則必須由用戶自己傳遞參數讓某個程序打開目標文件。
  2. 【示例 [size=10.5pt]2.2.1 】[size=10.5pt]
  3. [size=10.5pt]AHK:[size=10.5pt]
  4. [size=10.5pt]Run, MyFile.txt
  5. [size=10.5pt]Run, Notepad.exe MyFile.txt
  6. [size=10.5pt]AU3:[size=10.5pt]
  7. [size=10.5pt]Run("Notepad.exe MyFile.txt")
  8. [size=10.5pt]
複製代碼
3、以命令行形式運行程序
  1. 可以考慮運行系統的命令行解釋器([size=10.5pt]cmd.exe/command.com),然後指定要執行的命令並傳遞參數。[size=10.5pt]
  2. 假設我們要執行命令「[size=10.5pt]dir C:\WINDOWS\system 32」 ,用以列出指定目錄的所有文件及子目錄。[size=10.5pt]
  3. 【示例 [size=10.5pt]2.3.1 】[size=10.5pt]
  4. [size=10.5pt]AHK:[size=10.5pt]
  5. [size=10.5pt]Run, %ComSpec% /k dir C:\WINDOWS\system32
  6. [size=10.5pt]AU3:[size=10.5pt]
  7. [size=10.5pt]Run(@ComSpec & " /k dir C:\WINDOWS\system32")
  8. 注意:[size=10.5pt]
  9. [size=10.5pt]A)[size=10.5pt]ComSpec是腳本內建的用以指示命令行解釋器位置的變量或宏。[size=10.5pt]
  10. [size=10.5pt]B)[size=10.5pt]/k 參數表示「執行字符串指定的命令但保留」,若改為[size=10.5pt] /c 則表示「執行字符串指定的命令然後終斷」。對此比較直觀的解釋是[size=10.5pt] /k 將在執行完命令後保留命令提示窗口,而[size=10.5pt] /c 則將在執行完命令之後關閉命令提示窗口。[size=10.5pt]
  11. [size=10.5pt]C)符號「[size=10.5pt]&」是[size=10.5pt]AU3定義的字符串連接符。[size=10.5pt]
  12. [size=10.5pt]
複製代碼
4、特殊應用
  1. [size=10.5pt]A)打開網頁[size=10.5pt]
  2. 【示例 [size=10.5pt]2.4.1 】[size=10.5pt]
  3. [size=10.5pt]
  4. AHK:[size=10.5pt]
  5. [size=10.5pt]Run, www.autohotkey.com
  6. [size=10.5pt]Run, %A_ProgramFiles[size=10.5pt]%\Internet Explorer\IEXPLORE.EXE www.autohotkey.com
  7. [size=10.5pt]AU3:[size=10.5pt]
  8. [size=10.5pt]Run(@ProgramFilesDir & "\Internet Explorer\IEXPLORE.EXE www.autohotkey.com")
  9. [size=10.5pt]B)打開特殊文件夾[size=10.5pt]
  10. 系統的某些特殊文件夾被定義了相應的CLSID(請查看幫助文檔),我們可利用它來打開相應的文件夾,比如打開回收站:
  11. 【示例 [size=10.5pt]2.4.2 】[size=10.5pt]
  12. [size=10.5pt]
  13. AHK:[size=10.5pt]
  14. Run ::{645ff040-5081-101b -9f 08-00aa 002f 954e}
  15. [size=10.5pt]AU3:[size=10.5pt]
  16. 不適用![size=10.5pt]
  17. [size=10.5pt]C)運行控制面板工具[size=10.5pt]
  18. 微軟已經為我們提供了通過命令行打開控制面板某個工具或項目的方式,比如打開系統屬性窗口:[size=10.5pt]
  19. 【示例 [size=10.5pt]2.4.3 】[size=10.5pt]
  20. [size=10.5pt]
  21. AHK:[size=10.5pt]
  22. Run control sysdm.cpl
  23. [size=10.5pt]AU3:[size=10.5pt]
  24. Run("control sysdm.cpl")
  25. 關於訪問控制面板項目的詳細介紹請查看此文:文章地址。
  26. [size=10.5pt]D)指定搜索位置並打開搜索窗口[size=10.5pt]
  27. 假設我們要打開一個搜索窗口,而且要指定搜索位置,比如[size=10.5pt]C:\:[size=10.5pt]
  28. 【示例 [size=10.5pt]2.4.4 】[size=10.5pt]
  29. [size=10.5pt]
  30. AHK:[size=10.5pt]
  31. Run, find C:\
  32. [size=10.5pt]AU3:[size=10.5pt]
  33. 不適用![size=10.5pt]
  34. [size=10.5pt]E)顯示指定文件的屬性窗口[size=10.5pt]
  35. 假設我們要打開文件「[size=10.5pt]MyFile.txt」的屬性窗口,則使用關鍵字[size=10.5pt]properties 然後接上目標文件即可:[size=10.5pt]
  36. 【示例 [size=10.5pt]2.4.5 】[size=10.5pt]
  37. [size=10.5pt]
  38. AHK:[size=10.5pt]
  39. Run, properties MyFile.txt
  40. [size=10.5pt]AU3:[size=10.5pt]
  41. 不適用![size=10.5pt]
  42. 注意:[size=10.5pt]AHK在退出前將自動關閉打開的屬性窗口![size=10.5pt]
  43. [size=10.5pt]F)用「資源管理器」打開指定文件夾[size=10.5pt]
  44. 我們知道使用[size=10.5pt]Run, explorer C: 或[size=10.5pt]Run("explorer C:") 即可打開指定的文件夾,可是有時候我們需要在資源管理器中打開它,這時可使用關鍵字[size=10.5pt] explore:[size=10.5pt]
  45. 【示例 [size=10.5pt]2.4.6 】[size=10.5pt]
  46. [size=10.5pt]
  47. AHK:[size=10.5pt]
  48. Run, explore C:
  49. [size=10.5pt]AU3:[size=10.5pt]
  50. run("explorer.exe /e,C:\")[size=10.5pt]
  51. [size=10.5pt]G)打印指定文件[size=10.5pt]
  52. 要打印指定文件,可使用關鍵字[size=10.5pt] print:[size=10.5pt]
  53. 【示例 [size=10.5pt]2.4.7 】[size=10.5pt]
  54. [size=10.5pt]
  55. AHK:[size=10.5pt]
  56. Run, print MyFile.txt
  57. [size=10.5pt]AU3:[size=10.5pt]
  58. 不適用!
  59. [size=10.5pt]F)用「資源管理器」打開指定文件夾[size=10.5pt]
  60. 我們知道使用[size=10.5pt]Run, explorer C: 或[size=10.5pt]Run("explorer C:") 即可打開指定的文件夾,可是有時候我們需要在資源管理器中打開它,這時可使用關鍵字[size=10.5pt] explore:[size=10.5pt]
  61. 【示例 [size=10.5pt]2.4.6 】[size=10.5pt]
  62. [size=10.5pt]
  63. AHK:[size=10.5pt]
  64. Run, explore C:
  65. [size=10.5pt]AU3:[size=10.5pt]
  66. 不適用!
  67. [size=10.5pt]run("explorer.exe /e,d:\")
  68. [size=10.5pt]
  69. [size=10.5pt]這樣就可以做到你說的樹狀型打開目標文件夾了!
複製代碼
收藏收藏 分享分享 讚 幹 分享分享 FB分享
回覆

使用道具 舉報


n14231214 當前離線
UID
294251
熱心
59 值
嘉獎
0 次
違規
0 次
在線時間
268 小時
經驗
92 點
積分
1668
精華
0
最後登錄
2018-8-3
閱讀權限
40
註冊時間
2007-3-18
論壇幣
1175 幣
聯合幣
15 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 5Rank: 5Rank: 5
n14231214 2007-7-24 19:14:01
哈哈   小冰

我比你厲害    我是完全不懂
回覆

使用道具 舉報

kelsom647094 當前離線
UID
367039
熱心
73 值
嘉獎
0 次
違規
0 次
在線時間
499 小時
經驗
165 點
積分
737
精華
2
最後登錄
2009-2-14
閱讀權限
30
註冊時間
2007-4-27
論壇幣
703 幣
聯合幣
13 枚
幸運鑽
0 顆
招待卷
0 點
查看個人網站 查看詳細資料
Rank: 4Rank: 4
kelsom647094 2007-7-24 20:33:12
啊...我知道了.......
我知道我是多麼的笨了...
看了等於白看...
根本不知道在說什麼yociexp177.gif
進我管理的新論壇三小俠版~! 多多支持  這是新的  需要你們的幫忙 多發文  謝了
回覆

使用道具 舉報

楓情萬種 當前離線
UID
142354
熱心
47 值
嘉獎
0 次
違規
0 次
在線時間
939 小時
經驗
46 點
積分
46
精華
0
最後登錄
2013-11-11
閱讀權限
20
註冊時間
2007-1-7
論壇幣
107 幣
聯合幣
0 枚
幸運鑽
0 顆
招待卷
37202 點
查看個人網站 查看詳細資料
Rank: 2Rank: 2
楓情萬種 2007-7-25 00:24:20
這...小冰版主半懂,我可以說不是很懂。

倒是懂一點點Visual Basic,VB是一種製作程式的程式叫做程式語言。

剛開始玩3小俠常常自己寫腳本掛機,不過後來比較少在寫了。

這可能要慢慢研究了...yociexp87.gif
☆楓情萬種☆



回覆

使用道具 舉報

迷天使 當前離線
UID
23933
熱心
230 值
嘉獎
0 次
違規
0 次
在線時間
1444 小時
經驗
374 點
積分
2695
精華
3
最後登錄
2018-3-13
閱讀權限
40
註冊時間
2006-8-15
論壇幣
351 幣
聯合幣
113 枚
幸運鑽
12 顆
招待卷
0 點
查看個人網站 查看詳細資料
Rank: 5Rank: 5Rank: 5
5
迷天使 2007-7-25 03:54:30
不想懂...........
回覆

使用道具 舉報

honuo 當前離線
UID
90601
熱心
41 值
嘉獎
0 次
違規
0 次
在線時間
13 小時
經驗
181 點
積分
614
精華
1
最後登錄
2018-8-1
閱讀權限
30
註冊時間
2006-11-22
論壇幣
346 幣
聯合幣
9 枚
幸運鑽
0 顆
招待卷
0 點
Yahoo! 查看詳細資料
Rank: 4Rank: 4
6
honuo 2007-7-25 12:06:20
處于大陸與寶島的訪問限制,我這邊訪問安大網站極慢,好久沒上來頂下了,如果版大們能專門把強項體現在做教程與人分享的話,我想一會增加網站的點擊率及影響度.支持你們!
回覆

使用道具 舉報

honuo 當前離線
UID
90601
熱心
41 值
嘉獎
0 次
違規
0 次
在線時間
13 小時
經驗
181 點
積分
614
精華
1
最後登錄
2018-8-1
閱讀權限
30
註冊時間
2006-11-22
論壇幣
346 幣
聯合幣
9 枚
幸運鑽
0 顆
招待卷
0 點
Yahoo! 查看詳細資料
Rank: 4Rank: 4
7
honuo 2007-7-25 13:01:25
樓上的你真坦誠!下次來大陸帶些太陽餅過來(因為我這邊買不到)
回覆

使用道具 舉報

pb220501 當前離線
UID
9835
熱心
254 值
嘉獎
0 次
違規
0 次
在線時間
729 小時
經驗
209 點
積分
4945
精華
0
最後登錄
2023-6-5
閱讀權限
55
註冊時間
2006-7-22
論壇幣
3696 幣
聯合幣
36 枚
幸運鑽
2 顆
招待卷
24676 點
查看詳細資料
Rank: 5Rank: 5Rank: 5
8
pb220501 2007-7-25 23:40:31
好難懂....yociexp171.gif
努力中...yociexp183.gif
yociexp159.gif
回覆

使用道具 舉報

missqq0804 當前離線
UID
93205
熱心
142 值
嘉獎
0 次
違規
0 次
在線時間
105 小時
經驗
115 點
積分
567
精華
0
最後登錄
2018-2-2
閱讀權限
30
註冊時間
2006-11-24
論壇幣
178 幣
聯合幣
3 枚
幸運鑽
0 顆
招待卷
0 點
Yahoo! 查看詳細資料
Rank: 4Rank: 4
9
missqq0804 2007-7-26 06:28:38
有一點複雜.....yociexp178.gif
不過還是可以研究看看....是否也可以用JAVA寫出來??....yociexp182.gif
研究中....yociexp195.gif
顆顆
回覆

使用道具 舉報

sladhfn 當前離線
UID
9248
熱心
31 值
嘉獎
0 次
違規
0 次
在線時間
31 小時
經驗
52 點
積分
243
精華
0
最後登錄
2018-8-2
閱讀權限
25
註冊時間
2006-7-21
論壇幣
121 幣
聯合幣
6 枚
幸運鑽
0 顆
招待卷
250 點
查看詳細資料
Rank: 3
10
sladhfn 2007-7-31 01:11:36
是看懂了
不過~~抬頭一直重覆~~應該用專屬編碼程式時不用一直打吧
還是跟早期某某人設計的很像
因為有個固定的抬頭所以只要按一下xx鍵就會自動打上去了

好久迷有上來了~~
謝謝安南大大的分享^O^
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

12345下一頁

手機版 | Archiver | 外掛聯合國

GMT+8, 2024-5-11 14:03 , Processed in 0.070236 second(s), 18 queries , Memcache On.

版權說明:
  本站不會製作、經銷、代理外掛程式。僅免費提供外掛程式下載前之掃毒及掃木馬等安全檢測驗證,協助會員遠離盜號危險程式。本站所有資料均來自網際網路收集整理,說明文字暨下載連結轉載自原程 式開發站。站上出現之公司名稱、遊戲名稱、程式等,商標及著作權,均歸各公司及程式原創所有,本站程式所有權歸外掛聯合國所有。本程式所有權歸外掛聯合國所有.......

回頂部
第二步?
第三步?