作者wsyfish (開CRV2帶MoMo到處去玩)
站內EzHotKey
標題[AHK-] ControlSend影響組合鍵的問題
時間Tue Aug 21 15:36:50 2012
一開始,我是配合SetTimer,用下列指令,來背景對指定的視窗送出Enter
ControlSend, , {Enter}, ahk_id %id%
但發現,當SetTimer On的時候,也就是背景對指定視窗持續送出Enter,
則在其他視窗,使用到Ctrl、Alt、Shift等組合鍵,就會出現問題
後來換用
PostMessage, 0x100, 0x0D, 0, , ahk_id %id% ;0x100 WM_KEYDOWN 0x0D Enter
問題就獲得解決了
但當把按鍵從Enter換成w、a、s、d(背景遊戲角色移動用),使用指令:
PostMessage, 0x100, 0x53, 0, , ahk_id %id% ;0x100 WM_KEYDOWN 0x53 S
Sleep, 500
PostMessage, 0x101, 0x53, 0, , ahk_id %id% ;0x101 WM_WM_KEYUP 0x53 S
卻發現角色大概每次就只會移動二次就停住,手動移一下又會再移動個二次,
但切換到輸入訊息時,又發現,確實是一直有對指定視窗送出w、a、s、d
但將指令改用:
ControlSend, , {s down}, ahk_id %id%
Sleep, 500
ControlSend, , {s up}, ahk_id %_id%
就不會有移動二次就停住的問題,但卻會有如前述影響組合鍵的問題
請問是否有不會影響到組合鍵,背景持續送出按鍵的方法?
如果說是遊戲對於w、a、s、d有特殊處理的話,
又為何用ControlSend來背景控制角色移動就沒有問題呢?
附註:AutoHotKey真是太好用了!!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.204.31.212
※ 編輯: wsyfish 來自: 123.204.31.212 (08/21 15:38)
1F:→ ScorAlan:SetKeyDelay,,500 08/22 17:57
2F:→ ScorAlan:ControlSend, , {s down}{s up}, ahk_id %id% 08/22 17:57
3F:→ ScorAlan:能用嗎? 08/22 17:58
4F:推 fossil313:印象中的controlsend是無法用down或up的 我記錯了嗎... 08/22 22:11
5F:→ ScorAlan:F大沒記錯,是我搞錯了 08/22 23:10
6F:→ wsyfish:我用down或up倒是沒有問題,能夠達到我要的效果 08/23 14:26
7F:→ wsyfish:問題出在ControlSend會影響組合鍵,但PostMessage又不成功 08/23 14:27
8F:推 fossil313:那我猜是因為我的版本不是ahk_L的關係 兩位抱歉了 XD 08/23 21:56
9F:→ fossil313:另外問一下postmessage的errorlevel有顯示什麼嗎? 08/23 21:57
10F:→ fossil313:如果用sendmessage可以嗎? 08/23 21:57
11F:→ wsyfish:SendMessage會完全沒有反應,連遊戲內的對話輸入都沒有 08/24 12:24
12F:→ wsyfish:PostMessage則是對於遊戲內對話輸入,可以正常輸出wasd 08/24 12:24
13F:→ wsyfish:但是就角色移動,就只會移動二次就停住,但切換到對話輸入 08/24 12:25
14F:→ wsyfish:又會發現的確是有一直送出wasd,我在猜想是不是遊戲程式有 08/24 12:25
15F:→ wsyfish:對這方面做特別處理,但如果是這樣,為何ControlSend就ok? 08/24 12:26
16F:→ wsyfish:而ControlSend運作的時候,偏偏組合鍵又一直受到影響 08/24 12:27
17F:→ wsyfish:另外ErrorLevel則一直是0 08/24 12:29
18F:推 fossil313:試了一下才發現原來controlsend是可以送down up的 08/24 20:08
19F:→ fossil313:只是不能持續按住而已 用到現在真是白用了 orz 08/24 20:08
20F:→ fossil313:可以問一下那個遊戲是什麼嗎? 想直接去遊戲裡試試看 08/24 20:08
21F:→ wsyfish:Ptt有專版NobuOnline,應該很少人玩這遊戲^^ 08/25 00:47
22F:推 fossil313:看了一下信on操作 也許可以用controlclick來移動? 08/25 09:19
23F:→ fossil313:以前玩植物打殭屍時用controlclick沒出過什麼問題 08/25 09:19
24F:→ ScorAlan:PostMessage, 0x101, 0x53, lparam, , ahk_id %id% 08/25 21:18
25F:→ ScorAlan:lparam不要用零, bits 16-23 跟 31 要輸入 08/25 21:22
26F:→ wsyfish:感謝ScorAlan板友的提示,改成以下程式碼後,可順利運作 08/26 18:09
27F:→ wsyfish:PostMessage, 0x100, 0x53, 0x001F0001, , ahk_id %id% 08/26 18:09
28F:→ wsyfish:Sleep 1000 08/26 18:10
29F:→ wsyfish:PostMessage, 0x101, 0x53, 0xC01F0001, , ahk_id %id% 08/26 18:10
30F:→ wsyfish:這下子不需要使用ControlSend,就沒有組合鍵受影響的困擾 08/26 18:11