作者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