如果你只是后台发送文本、按键

如果你只是后台发送文本、按键,请忘记PostMessage / SendMessage,这两个命令受到受体窗口(hwnd指向的窗口)的影响,很可能会失效

以下是我针对一款腾讯游戏的窗口编写的代码:

;本着功能影响最小化的原则(你的热键只应该对特定的场景生效),我建议你这样获取窗口的hwnd
;为什么我的代码中大多数是hwnd?
;因为我的应用场景基本都是针对可以多开的游戏,能够唯一确定的事情就不要麻烦那个可以重名的窗口标题了
global adWinId:=0
#If WinActive("ahk_exe lin.bin")
;千万不要把赋值操作写在上面的if语句中,你的global变量获取的值很可能不够global,这是我最近踩过最恶心的坑
^z::
        adWinId:=WinActive()
#if
;后台向指定窗口发送文本
ControlSend,,{text} 这里是一段测试文本,(这里是中文逗号所以可以直接写)通过回车自动把这段文字发送出去,在结尾写上`n,ahk_id %adWinId%

;后台点击窗口中的指定坐标,!!!这段程序会因为你在adWinId对应的窗口中移动鼠标而失效,很粗很鸡肋的解决办法是你在执行该代码前直接把窗口最小化。。。
ControlClick, x55 y77, ahk_id %adWinId%

顺便夹带一点私货,通过PostMessage使窗口最小化

;通过ahk_id使指定窗口最小化
PostMessage,0x0112,61472,,, ahk_id %a_id%   

给TA捐赠
共{{data.count}}人
人已捐赠
教程

PostMessage&sendMessage发送按键消息的code对照

2024-3-9 6:50:05

教程

关于sendInput发送文本导致热键无法正常释放的问题解决

2024-3-11 6:30:24

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
有新私信 私信列表
搜索