gpt4 book ai didi

c++ - 如何在 C++ 中将键发送到最小化窗口

转载 作者:可可西里 更新时间:2023-11-01 14:15:08 42 4
gpt4 key购买 nike

我刚刚开始学习 C++。目前我正忙于一件我还找不到解决办法的小事。我希望有人能帮助我解决这个问题。

我的目标:我想向正在运行的应用程序发送几个击键。但是当应用程序没有焦点时,即最小化或其他任何时候,击键仍然应该是发送到应用程序。

我的问题:当我将函数 sendkey()VK_KEY 或其他任何东西一起使用时(不记得了,哈哈)然后它可以工作,但只有当窗口是最大化(集中),但是当我尝试使用 PostMessage(GameWindow, WM_KEYDOWN, 'G', 0); 时没有任何反应。

我在记事本上试过了,也在我想让它工作但没有用的应用程序上试过。

我想我需要 Hook 到进程然后发送 key ,不幸的是我对 C++ 没有问题(除非你完全赞成大声笑)但是我对 Hook 和那种东西没有任何经验。

任何人都可以向我发送正确的方向或给我写一个关于如何做这样的事情的小教程,例如使用其中一个 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 一起提供)来监视目标应用消息队列并查看它接收到的内容。

就其值(value)而言,记事本 (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;
}

关于c++ - 如何在 C++ 中将键发送到最小化窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8782648/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com