如何将按键发送到 DirectX 应用程序?
我需要用任何编程语言(最好是 Delphi 7 / Delphi 10 / C#)编写一个程序,模拟每 10 秒按一次 1
到 Windows XP 或 Windows 7 中的给定进程。发送 Windows 消息,其中适用于我尝试过的所有其他应用程序,但不适用于这个特定的应用程序,我怀疑这是因为它使用 DirectX。可以在不覆盖 DX*.DLL 文件的情况下完成此操作吗?如何?
谢谢你,
汤姆
编辑:我刚刚尝试使用 SendInput (在 Windows XP 上的 Delphi 7 中,代码来自 http://www.swissdelphicenter.ch/torry/ showcode.php?id=220) 这也不起作用
I need to write a program in any programming language (preferably Delphi 7 / Delphi 10 / C#) that emulates pressing 1
every 10 seconds to a given process in Windows XP or Windows 7. Sending Windows messages, which worked for all the other applications I have tried, didn't work for this particular one and I am suspecting it is because it is using DirectX. Can this be done without overwriting DX*.DLL
files? How?
Thank you,
Tom
EDIT: I've just tried using SendInput (in Delphi 7 on Windows XP with code from http://www.swissdelphicenter.ch/torry/showcode.php?id=220) and that doesn't work, either
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果应用程序不处理 WM_CHAR/等 Windows 消息(XInput/DirectInput),您最好的选择是制作一个 dll 注入到应用程序中,覆盖某些函数,导致这些函数直接使用系统资源来访问键盘/鼠标/游戏手柄。 (无论如何,使用 DirectInput/XInput 作为键盘确实是个坏主意:|)
If the application don't process WM_CHAR/etc Windows Messages (XInput/DirectInput) your best bet is to make a dll to inject into the app overriding some of the functions cause those use directly the system resources to access the keyboard/mouse/gamepad. (really bad idea to use DirectInput/XInput for keyboard anyway :|)
该应用程序可能正在使用 DirectInput 或 XInput。在这种情况下您无能为力,因为 DirectInput 直接与键盘驱动程序一起工作。
The application is probably using DirectInput or XInput. There is little you can do in this case because DirectInput works directly with the keyboard driver.
最后,我使用了 IO.DLL,不幸的是它无法在 64 位上运行,但我仍然很高兴大约 90% 的目标使用 32 位。
Finally, I've used IO.DLL, which unfortunately doesn't work on 64-bit, but I'm still happy that about 90% of my target uses 32-bit.