如何将密钥发送到C ++中的最小化窗口

我刚开始学习C ++。 目前我在一个小东西堆栈,我还找不到解决scheme。 我希望有人能帮助我解决这个问题。

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

我的问题:当我使用函数sendkey()VK_KEY或什么(不记得哈哈)然后它工作,但只有当窗口是最大化(集中),但是当我尝试使用PostMessage(GameWindow, WM_KEYDOWN, 'G', 0); 什么都没发生。

我在记事本上尝试过,但也在我希望它的工作,但没有什么应用程序。

我想我需要挂钩的过程,然后发送密钥,不幸的是,我没有与C + +的问题(除非你完全赞成),但我没有什么经验这样的钩和那种东西。

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

记事本(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; }