天天看点

无法向某些窗口发送模拟键盘鼠标消息的问题

一些情况下,我们可以通过postmessage 和sendmessage向指定窗口发送模拟键盘及鼠标消息(像按键精灵一样的效果)。

但是有些游戏窗口我们貌似发送成功了,但是发现游戏压根没反应,这时我们可以用spy++检测指定窗口的消息记录,看看我们的消息是否真的发送已发送成功:

1.如果它能检测到你发的消息,那么可能是你的参数有问题或者消息顺序问题或者延时问题,你得回去仔细检查你的程序了。

2.spy++检测不到,但是参数也没问题,这可能是你发送的消息被拒绝了,可以用getlasterror检查一下返回值,如果返回值是5,说明是拒绝访问。下面就为大家解决这个问题:

(1)以管理员模式运行此程序,(对着应用程序,点击鼠标右键,管理员模式运行),这样就可以发送成功了。但是这种比较费事 !

(2)让生成的exe自动变成管理员模式运行,如果你的编译器是vs2005或者更高,你可以通过直接项目右键---属性---连接器---清单文件---uac执行级别 选择requireAdministrator 重新编译 这样你的程序图标上就有个小盾牌了,直接运行就拥有管理员权限了。

如果是VC++,只需要更改程序的manifest文件

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly

xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security>

<requestedPrivileges> <requestedExecutionLevel level="asInvoker"

uiAccess="false"></requestedExecutionLevel> </requestedPrivileges>

</security> </trustInfo> </assembly>

只要将requestExecutionLevel的level的值改成requiredAdministrator,再重新将这个文件链接入EXE即可。