如何在 C++ 中将 keydown 事件发送到 inactive window?
How to send keydown event to inactive window in C++?
[C++] 如何将 keydown 事件发送到非活动 window?
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 事件。
试过从几个地方搜索,但到目前为止我还没有找到解决方案。
好的。当您按 Z
键时,使用 Spy++ 和记事本接收的挂钩消息。这样你就可以 simulate/emulate 完全相同的东西,所以它看起来就像用户按下 Z
键一样。
另外你需要在记事本中找到Edit
class来发送消息。
所以我这样做了,我 运行 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);
}
[C++] 如何将 keydown 事件发送到非活动 window?
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 事件。 试过从几个地方搜索,但到目前为止我还没有找到解决方案。
好的。当您按 Z
键时,使用 Spy++ 和记事本接收的挂钩消息。这样你就可以 simulate/emulate 完全相同的东西,所以它看起来就像用户按下 Z
键一样。
另外你需要在记事本中找到Edit
class来发送消息。
所以我这样做了,我 运行 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);
}