【发布时间】:2015-11-03 20:52:27
【问题描述】:
[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 事件。 尝试从几个地方搜索,但到目前为止我还没有找到解决方案。
【问题讨论】:
-
为什么不
PostMessage(hWindowHandle, WM_CHAR, 0x5A, 0);? -
感谢您的建议,但我会失去 keydown 和 keyup 事件的功能。
-
你可以试试
SendMessage(hWindowHandle,WM_KEYUP,VK_Z,0);来确定一下吗? -
现在试过了。 MinGW 无法编译代码:“1.cpp:24:39:错误:'VK_Z' 未在此范围内声明”我将新值声明为“DWORD VK_Z = 0x5A;”这将消除错误。按下按钮不适用于 Z。当我将代码更改为 0x09 时,它再次与 Tab 键一起使用。
标签: c++ sendmessage postmessage