網上教程 - 按鍵精靈常用功能-詳細解說


來源: 兄弟工作組按鍵精靈討論區(歡迎大家來討論)
作者: lolo_xd
標題: 按鍵精靈常用功能-詳細解說

按鍵精靈常用功能-詳細解說[1]-鍵盤動作按鍵精靈常用功能-解說[版本5.0以上]
首先-啟動按鍵精靈-看到主程序界面的「小燈泡」增加按鈕了嗎?點擊它...
然後-這樣就新建了一個腳本,並進入了腳本編輯器界面。(具體參見Qmacro基礎資料http://www.vrbrothers.com/cn/qmacro/)

按鍵精靈常用功能-詳細解說[1]-鍵盤動作-4個功能
(1)單個按鍵的模擬-模擬鍵盤的單個按鍵動作,可以是按1下、按住不動、彈起來等3種形式,可以根據自己的需要,設定執行次數。
(2)按鍵組合的模擬-模擬按鍵組合,比如ctrl+shift+G之類的,但是不能G+H 這樣子哦,那要需要的時候怎麼模擬G+H呢?使用(1)功能-按下G,再按下H,就等於G+H了嘛~~~(不同步?哦,計算機的反映速度是很快的!)
(3)腳本暫停按任意鍵繼續功能-這裡可以設置一個變量,用來表示可能是哪個按鍵,比如設置了變量key,當key這個變量變動的時候...比如key=49的時候,表示按1就能使腳本繼續...那麼怎麼知道哪個數字對應是哪個按鍵?請看(4)的功能。
(4)得到按鍵碼-在左邊的空白輸入一個按鍵,右邊就顯示出相應的按鍵碼哦。有一些特殊的按鍵碼是多少呢?可以去下載個ASCII碼表看看。
舉例:打開一個記事本,光標停空白處,按1下你設定的快捷鍵開始執行你設計的腳本...

Rem rem只是註釋語句,可以做標記或解釋用途。
Rem rem這一行,不會有功能,比如:KeyPress 49 10
Rem 按1鍵10次,換行
KeyPress 49 10
KeyPress 13 1
Rem 按下1鍵不動,2秒後彈起,換行
KeyDown 49 1
Rem 延時2000毫秒
Delay 2000
KeyUp 49 1
KeyPress 13 1
Rem 按shift+1組合鍵,換行
KeyDown 16 1
KeyPress 49 1
KeyUp 16 1
KeyPress 13 1
Rem 提示後,等待任意鍵繼續
SayExpression "請按任意鍵繼續吧。"
KeyPress 13 1
Rem 等待任意鍵繼續
WaitKey
Rem 提示後,等待空格鍵繼續
SayExpression "讓我們繼續,這次按空格才能繼續。"
KeyPress 13 1
Rem 等待space空格鍵繼續
WaitKey Pkey
If Pkey<>32
SayExpression "按空格才能繼續!"
KeyPress 13 1
Goto 等待space空格鍵繼續
Else
KeyPress 13 1
SayExpression "好的,演示完成了。"
EndIf
Delay 1000
VBSCall CALL MessageBox("演示完成。")
EndScript

以上腳本的疑問:
1.rem-是解釋和標記用的,可以讓自己思路更有條理和設置方便的跳轉goto功能。
2.goto-是表示跳轉,後面跟標記。例:「goto 等待space空格鍵繼續」 就是說,跳轉到標記了「等待space空格鍵繼續」的地方,和rem配合使用。注意:有2個相同標記的時候,會依次跳轉哦!可能就跳不到你想的位置了~~~所以請別使用相同的標記!!
3.delay-表示此處須延時等待,後面的數值單位是毫秒ms,1000表示1000毫秒,也就是1秒啦。
4.SayExpression ""-輸出引號內的字符內容,引號裡面有什麼就輸出什麼。注意:前提是鼠標光標要停在可以輸出字符的地方哦~~~!
5.VBSCall CALL MessageBox()-彈出一個窗,內容是括號內的東西,可以是""裡面的字符串,也可以是常量或變量。
6.EndScript-表示腳本結束。
7.為什麼按下1鍵後,沒有一直輸出「1」?2秒後彈起1鍵,總共才輸出1個「1」?-在記事本程序,如果一直按住1鍵,就會連續輸出「1」,但是記事本是怎麼處理「按住1鍵」的?這和按鍵精靈的KeyDown有點不同哦。其實,「按住」、「彈起」通常都用於組合鍵中,比如按下Ctrl、Shift、Alt之類的...
8.為什麼等待按鍵繼續的時候,按鍵的字符也會出現呢?-因為按鍵精靈是獨立於其它程序執行的,就是說按鍵精靈在運行,記事本本身也在運行,而按鍵精靈並沒有阻止或完全控制記事本的運行...也就是說,按下某個鍵的同時,既在執行按鍵精靈的腳本,也在執行某程序本身...(按鍵精靈操作對象的只是顯示出來的屏幕畫面本身...)

按鍵精靈常用功能-詳細解說[2]-鼠標動作按鍵精靈常用功能-詳細解說[2]-鼠標動作


按鍵精靈常用功能-解說[版本5.0以上]
首先-啟動按鍵精靈-看到主程序界面的「小燈泡」增加按鈕了嗎?點擊它...
然後-這樣就新建了一個腳本,並進入了腳本編輯器界面。(具體參見Qmacro基礎資料

http://www.vrbrothers.com/cn/qmacro/)

按鍵精靈常用功能-詳細解說[2]-鼠標動作-4個功能
(1)模擬鼠標(3鍵鼠標哦)的按鍵-可以模擬鼠標的左、右和中鍵的單擊、雙擊、按下、彈起,並設定

次數。不能模擬滾輪中鍵的滾動功能,遺憾~!(還是有辦法:按中鍵,再移動鼠標)
(2)模擬鼠標定點移動-移動到某個坐標,絕對坐標哦,坐標系原點O在屏幕左上角,x方向右,y方向

下。這個功能可以方便、準確的把鼠標移動到你想去的點。
(3)模擬鼠標定距離移動-這次是相對移動,無論當前鼠標在什麼位置,我們設定的DX,DY是相對坐標

哦,原點是當前鼠標停點,x方向右,y方向下。(這樣說是不是太煩了?)這個功能可以方便、準確的把

鼠標移動一定的距離,這個距離是多少,就看你的設定咯~~~
(4)保存和恢復鼠標的位置-記錄鼠標位置,快速回位功能,不需要知道此時坐標是多少,不需要知道

距離是多少,只是方便的記錄、回位功能。(不過我習慣對數字的東西掌握得一清二楚的,所以很少使

用這功能)

舉例:就在這個網頁吧,光標停在本帖的第4行第4字處,按一下你設定的快捷鍵開始執行你設計的腳

本...

Rem 記錄保存鼠標位置
SaveMousePos
Rem 左鍵按下,橫拉,豎拉,斜拉,彈起,單擊,雙擊
LeftDown 1
Delay 1000
MoveR 100 0
Delay 1000
MoveR 0 100
Delay 1000
MoveTo 720 540
Delay 1000
LeftUp 1
Delay 1000
Rem 鼠標回位
RestoreMousePos
Delay 1000
LeftClick 1
Delay 1000
LeftDoubleClick 1
Delay 1000
Rem 右鍵單擊,中鍵單擊,右鍵按下,移動,彈起,鼠標回位
RightClick 1
Delay 1000
LeftClick 1
Delay 1000
MiddleClick 1
Delay 1000
MoveR 0 50
Delay 1000
MiddleClick 1
Delay 1000
RightDown 1
Delay 1000
MoveR 100 0
Delay 1000
MoveR 0 100
Delay 1000
MoveR -100 -100
Delay 1000
RightUp 1
Delay 1000
LeftClick 1
Delay 1000
RestoreMousePos
EndScript

以上腳本的疑問:
1.怎麼模擬右鍵雙擊?
-使用RightClick 2,
-或者RightClick 1
delay 20
RightClick 1
看自己喜好和需要了(中間雙擊也一樣)
2.LeftClick 2和LeftDoubleClick 1有什麼不同嘛?
-這個嘛,就要看按鍵本身的設置了,LeftClick 2兩次之間的延時是多少?LeftDoubleClick 1之間

的延時是多少?我無非用數字回答。
3.MoveTo和MoveR用哪個好?
-沒有哪個好哪個差,只有哪個方便。一般知道點坐標來移動就用MoveTo;知道移動的距離就用MoveR

;誰方便用誰,非要用另一個也是可以的,自己計算點坐標和距離吧。
4.中鍵滾動怎麼模擬?
-問問作者吧,加設功能才行,目前的方法:
MiddleClick 1
Delay 1000
MoveR 0 50
Delay 1000
MiddleClick 1
通過MoveR的距離來控制滾動速度,通過MoveR後的延時來控制滾動距離。最後中間單擊結束滾動。
5.USB鼠標,P/S大圓口鼠標,串口鼠標,硬件模擬,軟體模擬的問題。
-具體需要咨詢作者了,嘿嘿。我只知道這麼多啦,我也只是一個普通用戶嘛~~~!

按鍵精靈常用功能-詳細解說[3]-控制動作按鍵精靈常用功能-詳細解說[3]-控制動作


按鍵精靈常用功能-解說[版本5.0以上]
首先-啟動按鍵精靈-看到主程序界面的「小燈泡」增加按鈕了嗎?點擊它...
然後-這樣就新建了一個腳本,並進入了腳本編輯器界面。(具體參見Qmacro基礎資料http://www.vrbrothers.com/cn/qmacro/)

按鍵精靈常用功能-詳細解說[3]-控制動作-6個功能
(1)抓點顏色並執行語句-通過判斷屏幕x,y坐標的某點的顏色,是等於、不等於、還是近似某顏色,來執行後面的動作或控制...抓點顏色教程詳見...
(2)循環語句-循環N次,其實這裡除了可以用for,還可以用while語句。
(3)條件語句-如果某條件成立,執行某命令...除了簡單的If...EndIf,還可以If...else...endif,或if...elseif...elseif...endif等形式。
(4)跳轉和調用子程序-跳轉用goto,可以跳轉到rem標記過的地方,調用子程序用gosub,這裡要說明一點是:rem標記和子程序名字一樣的話,將也會goto到子程序處,而不僅僅是goto到rem的標記。
(5)標記和子程序-rem除了用來解釋,最重要的作用就是做goto的標記;sub...return子程序的好處,就是不必在主程序寫很多相同的代碼,使用模塊化的子程序,調用方便,結構清晰...不過,最好使用唯一的子程序名稱,和rem的標記名稱也要獨立唯一,不然容易出錯,還有就是同一個子程序未結束的時候再次調用,return的時候容易看錯哦。
(6)腳本停止-很簡單Endscript表示到此腳本運行完畢。

舉例:大家可以找找論壇裡的各種腳本,參見其中的這些功能,按下你設定的快捷鍵開始執行你的腳本...
rem while語句循環
VBS i=0
while i<=9
VBS i=i+1
endfor
VBSCALL CALL messagebox(i)

rem if語句循環
VBS j=0
if j<=10
j=j+1
goto if語句循環
else
VBSCALL CALL messagebox(j)
endif

rem 子程序
VBS k=0
gosub 跳出對話框k

rem 演示rem和sub同名
waitkey
VBS k=0
goto 跳出對話框k
VBS k=0
gosub 跳出對話框k
rem 跳出對話框k
VBS k=100
VBSCALL CALL messagebox(k)

rem 演示重複調用
VBS p=0
VBS pp=1
gosub 重複
VBSCALL CALL messagebox(p)
VBSCALL CALL messagebox(pp)
endscript

sub 跳出對話框k
VBS k=i+j
VBSCALL CALL messagebox(k)
return

Sub 重複
If p=3
Goto 返回
Else
VBSCall CALL messagebox("我是重複")
VBS p=p+1
Gosub 重複
VBS pp=pp+1
EndIf
Rem 返回
VBSCall CALL messagebox(pp)
Return