[AHK-] ControlSend影響組合鍵的問題

看板EzHotKey作者 (開CRV2帶MoMo到處去玩)時間12年前 (2012/08/21 15:36), 編輯推噓4(4026)
留言30則, 3人參與, 最新討論串1/1
一開始,我是配合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)

08/22 17:57, , 1F
SetKeyDelay,,500
08/22 17:57, 1F

08/22 17:57, , 2F
ControlSend, , {s down}{s up}, ahk_id %id%
08/22 17:57, 2F

08/22 17:58, , 3F
能用嗎?
08/22 17:58, 3F

08/22 22:11, , 4F
印象中的controlsend是無法用down或up的 我記錯了嗎...
08/22 22:11, 4F

08/22 23:10, , 5F
F大沒記錯,是我搞錯了
08/22 23:10, 5F

08/23 14:26, , 6F
我用down或up倒是沒有問題,能夠達到我要的效果
08/23 14:26, 6F

08/23 14:27, , 7F
問題出在ControlSend會影響組合鍵,但PostMessage又不成功
08/23 14:27, 7F

08/23 21:56, , 8F
那我猜是因為我的版本不是ahk_L的關係 兩位抱歉了 XD
08/23 21:56, 8F

08/23 21:57, , 9F
另外問一下postmessage的errorlevel有顯示什麼嗎?
08/23 21:57, 9F

08/23 21:57, , 10F
如果用sendmessage可以嗎?
08/23 21:57, 10F

08/24 12:24, , 11F
SendMessage會完全沒有反應,連遊戲內的對話輸入都沒有
08/24 12:24, 11F

08/24 12:24, , 12F
PostMessage則是對於遊戲內對話輸入,可以正常輸出wasd
08/24 12:24, 12F

08/24 12:25, , 13F
但是就角色移動,就只會移動二次就停住,但切換到對話輸入
08/24 12:25, 13F

08/24 12:25, , 14F
又會發現的確是有一直送出wasd,我在猜想是不是遊戲程式有
08/24 12:25, 14F

08/24 12:26, , 15F
對這方面做特別處理,但如果是這樣,為何ControlSend就ok?
08/24 12:26, 15F

08/24 12:27, , 16F
而ControlSend運作的時候,偏偏組合鍵又一直受到影響
08/24 12:27, 16F

08/24 12:29, , 17F
另外ErrorLevel則一直是0
08/24 12:29, 17F

08/24 20:08, , 18F
試了一下才發現原來controlsend是可以送down up的
08/24 20:08, 18F

08/24 20:08, , 19F
只是不能持續按住而已 用到現在真是白用了 orz
08/24 20:08, 19F

08/24 20:08, , 20F
可以問一下那個遊戲是什麼嗎? 想直接去遊戲裡試試看
08/24 20:08, 20F

08/25 00:47, , 21F
Ptt有專版NobuOnline,應該很少人玩這遊戲^^
08/25 00:47, 21F

08/25 09:19, , 22F
看了一下信on操作 也許可以用controlclick來移動?
08/25 09:19, 22F

08/25 09:19, , 23F
以前玩植物打殭屍時用controlclick沒出過什麼問題
08/25 09:19, 23F

08/25 21:18, , 24F
PostMessage, 0x101, 0x53, lparam, , ahk_id %id%
08/25 21:18, 24F

08/25 21:22, , 25F
lparam不要用零, bits 16-23 跟 31 要輸入
08/25 21:22, 25F

08/26 18:09, , 26F
感謝ScorAlan板友的提示,改成以下程式碼後,可順利運作
08/26 18:09, 26F

08/26 18:09, , 27F
PostMessage, 0x100, 0x53, 0x001F0001, , ahk_id %id%
08/26 18:09, 27F

08/26 18:10, , 28F
Sleep 1000
08/26 18:10, 28F

08/26 18:10, , 29F
PostMessage, 0x101, 0x53, 0xC01F0001, , ahk_id %id%
08/26 18:10, 29F

08/26 18:11, , 30F
這下子不需要使用ControlSend,就沒有組合鍵受影響的困擾
08/26 18:11, 30F
文章代碼(AID): #1GCpgLPQ (EzHotKey)
文章代碼(AID): #1GCpgLPQ (EzHotKey)