如何在C++中将keydown事件发送到非活动窗口
How to send keydown event to inactive window in C++?
[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事件是我尝试做的事情所必需的。我试着从几个地方搜索,但到目前为止还没有找到解决方案。
好的。使用Spy++并在按下Z
键时挂接Notepad收到的消息。通过这种方式,您可以模拟/模拟完全相同的东西,所以它看起来就像用户按下的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);
}
相关文章:
- 如何在QT中为QInputDialog输入密码时设置背景非活动和灰色?
- 如何按z顺序获取第二个活动窗口?
- C# - 显示对话框将所有者设置为非托管窗口
- 如何在 Ubuntu Qt 中获取活动窗口标题
- 使用 std::launder 从指向非活动工会成员的指针获取指向活动工会成员的指针?
- 在单个进程中使Qt顶级窗口被其他非Qt窗口"owned"
- 使用XCB获取活动窗口的宽度
- 使用 std::launder 从指向非活动对象的指针获取指向活动对象成员的指针?
- 正在使用reinterpret_cast(在非活动成员中)强制转换为联合 UB 的活动成员
- 当应用程序变为活动/非活动状态时获取通知
- 应该如何检索当前活动窗口的光标下的单词
- 如何在Windows8中获取活动窗口的标题颜色
- Win32逻辑块预处理器显示为非活动状态
- 访问非活动的联合成员和未定义的行为
- 如何在不破坏非活动选择颜色的情况下更改 wxTextCtrl 的背景颜色
- QPushButton 处于非活动状态,直到 MainWindow 获得焦点
- 问题:如何在非活动窗口中显示所选文本
- 如何在C++中将keydown事件发送到非活动窗口
- 如何在Windows8中获取窗口标题栏(活动和非活动)的颜色
- 使用PostMessage将文本发送到非活动窗口无法发送移位