[C ++]如何将keydown事件发送到非活动窗口?
TAB键工作正常。但我在使用" Z"等其他键时遇到了问题。谷歌搜索了一段时间,但到目前为止还没有找到解决方案。
虚拟键0x5A应该对字母Z正确。
#include <iostream>
#include <Windows.h>
#include <string>
LPCSTR Target_window_Name = "Untitled - Notepad"; //<- Has to match window name
HWND hWindowHandle = FindWindow(NULL,Target_window_Name);
int main()
{
//send TAB DOWN - WORKS FINE
SendMessage(hWindowHandle,WM_KEYDOWN,0x09,0);
//send TAB DOWN
SendMessage(hWindowHandle,WM_KEYUP,0x09,0);
//send Z DOWN - NOT WORKING
SendMessage(hWindowHandle,WM_KEYDOWN,0x5A,0);
//send Z UP
SendMessage(hWindowHandle,WM_KEYUP,0x5A,0);
return(0);
}
PS Keydown和Up事件是我尝试做的事情所必需的。 尝试从几个地方搜索,但到目前为止我还没有找到解决办法。
答案 0 :(得分:1)
确定。按Z
键时,使用Spy ++并挂钩记事本收到的消息。这样你就可以模拟/模拟完全相同的东西,所以它看起来就像用户按下Z
键一样。
您还需要在记事本中找到Edit
类来发送消息。
所以我做了这个,我运行Spy ++,挂钩消息,写了同样的事情。现在它起作用了:
#include <windows.h>
#include <iostream>
#include <string>
int main()
{
LPCSTR Target_window_Name = "Untitled - Notepad"; //<- Has to match window name
HWND hWindowHandle = FindWindow(NULL,Target_window_Name);
HWND EditClass = FindWindowEx(hWindowHandle, NULL, "Edit", NULL);
SendMessage(EditClass,WM_KEYDOWN,0x5A,0x002C0001);
SendMessage(EditClass,WM_CHAR,0x7A,0x002C0001);
SendMessage(EditClass,WM_KEYUP,0x5A,0xC02C0001);
return(0);
}