如何在C++中将密钥发送到最小化窗口
How to send keys to a minimized window in C++
我刚刚开始学习C++。此刻,我正忙于一件小事,但我还找不到解决办法。我希望有人能在这件事上帮我。
我的目标是:我想向正在运行的应用程序发送几个击键。但是,当应用程序没有焦点时,即最小化或一直如此时,按键仍然应该是发送到应用程序。
我的问题是:当我将函数sendkey()
与VK_KEY
一起使用时(不记得了,哈哈),它是有效的,但只有当窗口最大化(聚焦)时,但当我尝试使用PostMessage(GameWindow, WM_KEYDOWN, 'G', 0);
时,什么都没有发生。
我在记事本上试过了,但也在我希望它能工作的应用程序上试过,但什么都没有。
我想我需要挂接进程,然后发送密钥,不幸的是,我对C++没有问题(除非你完全支持lol),但我对挂接之类的东西没有任何经验。
有人能给我发一个正确的方向吗?或者给我写一个关于如何做这件事的小教程,比如用一个Windows游戏?
if( amount != 0 )
{
// bring the window to the front
HWND GameWindow = FindWindow(0, L"Naamloos - Kladblok");
SetForegroundWindow(GameWindow);
// execute the loop
for( int i = 0; i < amount; i++ ){
// not the last loop so add a pause at the end
if( i < (amount-1))
{
PostMessage(GameWindow, WM_KEYDOWN, 'G', 0);
PostMessage(GameWindow, WM_KEYUP, 'G', 0);
Sleep(2000);
}
// last loop so dont add a pause at the end
else
{
PostMessage(GameWindow, WM_KEYDOWN, 'G', 0);
PostMessage(GameWindow, WM_KEYUP, 'G', 0);
}
}
}
Win32应用程序对Windows消息的行为方式完全由其自己决定。因此,可能是您的目标窗口/应用程序正在接收消息,而只是选择忽略它们。您可以使用Microsoft Spy++(Visual Studio附带)来查看目标应用程序的消息队列,并查看它接收到的内容。
就其价值而言,Notepad(v5.1)选择监听WM_CHAR消息(而不是WM_KEYDOWN/WM_KEYUP),即使在最小化的情况下也是如此(下面的示例代码)。
#include "stdafx.h"
#include "Windows.h"
int _tmain(int argc, _TCHAR* argv[])
{
HWND hwndWindowTarget;
HWND hwndWindowNotepad = FindWindow(NULL, L"Untitled - Notepad");
if (hwndWindowNotepad)
{
// Find the target Edit window within Notepad.
hwndWindowTarget = FindWindowEx(hwndWindowNotepad, NULL, L"Edit", NULL);
if (hwndWindowTarget)
{
PostMessage(hwndWindowTarget, WM_CHAR, 'G', 0);
}
}
return 0;
}
相关文章:
- 超轻 - 如何最小化窗口
- 如何隐藏最大化和最小化按钮并在qml应用程序窗口中显示关闭按钮?
- 如何使用 stl 最小化 c++ 中所有打开的窗口
- 当模式窗口最小化时,最小化所有应用程序窗口(在 Linux 上)
- 什么是窗口最大化/最小化/恢复的WM Windows消息
- 检查特定应用程序的窗口是否处于最小化状态
- 最小化/最大化后,MFC窗口图形消失了
- 最小化后无法恢复 SDL 窗口
- DirectX9 C++ - 在窗口最小化时加载纹理
- 从最小化的窗口捕获图像
- 如果 winapi 窗口最小化,如何恢复它?
- 在最小化的 MFC 窗口中查找 CListCtrl 的有效大小
- 优麒麟 SDK QML 快速查看窗口关闭,最小化按钮不可见
- 关闭窗口不会最小化我刚刚启动的进程的窗口
- MFC:如何最小化按钮单击时的窗口
- 在qml中恢复最小化的无框窗口
- WM_PAINT在最小化并恢复窗口后停止工作
- MFC-仅最小化主MDI窗口
- 如何在C++中将密钥发送到最小化窗口
- 从另一个线程最大化/最小化窗口