我正在尝试为游戏制作一个简单的机器人程序。即使游戏失焦或最小化,我也希望它能够正常工作。因此,我不能使用 SendInput() 因为它模拟全局事件。我发现,要完成这项工作,我必须使用 PostMessage() 函数。我做了一个模拟记事本输入的测试程序:
#include <Windows.h>
HWND handle = FindWindow(NULL,CStringW("Untitled - Notepad"));
HWND edit = FindWindowEx(handle, NULL, CStringW("Edit"), NULL);
PostMessage(edit, WM_CHAR, 'a', 0 );
即使记事本失焦或最小化,此示例也成功模拟了在记事本中单击“a”。我同样让鼠标事件也能正常工作。
但是,当我为我的游戏尝试同样的事情时,我无法发布点击命令。查了一下发现调用FindWindowEx()时获取了原来的句柄但是权限被拒绝,没有返回句柄。
如果阻止此功能,是否有办法获得对另一个进程的“编辑”访问权限?