我刚开始学习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);
}
}
}
您不检查错误。你确定'FindWindow'成功了吗?像这样的'SetForegroundWindow'将不起作用。请阅读文档:http://msdn.microsoft.com/en-us/library/windows/desktop/ms633539(v=vs.85).aspx – 2012-01-09 00:14:02
感谢您的回复!是的,它正在工作,我看到记事本窗口弹出,当我使用sendkeys而不是像PostMessage的其他东西,它确实工作正常;)因此,代码是正确的,它只是PostMessage不会做一件事; ; – user1137770 2012-01-09 00:50:08
那么,有时你可以像这样伪造输入,有时它不起作用。您可以尝试在记事本中定位编辑窗口。但至于你知道的游戏。如果你解释了为什么你试图对游戏进行虚假输入,也许我们可以做得更好。 – 2012-01-09 01:09:42