将密钥发送到非前台的游戏窗口

send a key to a game window not foreground

本文关键字:前台 游戏 窗口 密钥      更新时间:2023-10-16

我正在玩一个由directX运行的游戏,我通过postMessage((将keybord的密钥发送到游戏窗口,但是在发送密钥之前,我必须将此窗口置于前台,否则它将失败。

::SetForegroundWindow(hwnd);
::PostMessage(hwnd, WM_KEYDOWN, keyCode, key_param_1); Sleep(20); ::PostMessage(hwnd, WM_KEYUP, keyCode, key_param_2);

有没有办法在没有前景窗口的情况下发送密钥?(PS:游戏名称为《天龙八部》(

我上面粘贴的代码效果很好。唯一的缺点是我必须将窗口放在前台。我同时为这个游戏打开两个窗口,现在我添加一个互斥锁来控制两个窗口,效果很好,但是两个窗口之间的追逐太频繁了,我觉得对我的眼睛不好;这个技术不是为了生意,我向上帝发誓。我发现一个游戏的软件已经完成了,发送这个游戏的密钥不是前台,但这个软件的作者在5个月前被警察抓住并面临诉讼。我已经使用他的软件4年了,但现在他的软件被冻结了。所以我想自己做这个。

输入只能发送到焦点窗口(参见 https://en.wikipedia.org/wiki/Focus_(计算((

但是有一些技术可以规避这一点:

  • 微软自己的"教程":https://learn.microsoft.com/en-us/dotnet/framework/winforms/how-to-simulate-mouse-and-keyboard-events-in-code

  • https://batchloaf.wordpress.com/2013/02/13/sending-一个键到一个窗口-那不是焦点-c-程序/

  • http://forums.codeguru.com/showthread.php?555185-已解决如何使用-发送输入((-对于-非焦点-窗口