如何将密钥发送到非活动的DirectX“ ePSXe”?窗口? [英] How can I send keys to inactive DirectX "ePSXe" window?
问题描述
我需要使用C#将密钥发送到非活动的 ePSXe窗口。我使用Spy ++获取了窗口的句柄,但是当我使用此代码发送键 x时,却什么也没有。我应该怎么办?
I need to send a key to an inactive "ePSXe" window using C#. I got the handle of the window using Spy++, but when I used this code to send key "x", I got nothing. What should I do?
我尝试了不同的 Msg
值,如 0x0100
, 0x0101
和 0x0102
,但没有任何效果。我还尝试了 SendMessage
,结果是相同的。
I tried different values of Msg
as 0x0100
, 0x0101
and 0x0102
, but nothing worked. I also tried SendMessage
and the results were the same.
[DllImport("user32.dll")]
public static extern IntPtr PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
private void Send_X(IntPtr p)
{
PostMessage(p, 0x0100, (IntPtr)Keys.X, IntPtr.Zero);
}
我希望窗口能够响应我的密钥。我设法只发送了F键 F1,F2 ..,但没有发送字母键。
I expect the window to respond to my key. I managed only to send F keys "F1, F2..", but not letter keys.
SendMessage(p, 0x0100, (IntPtr)Keys.F4, IntPtr.Zero);
SendMessage(p, 0x0101, (IntPtr)Keys.F4, IntPtr.Zero);
我认为发送到非活动游戏应用程序不是容易,但是此解决方案对我有很大帮助,但我必须专注于ePSXe。
向DirectX游戏发送密钥。
我仍在寻找可以发送到非活动游戏窗口的解决方案。
I am still looking for a solution that can send to an inactive game window.
推荐答案
Process P = ...get process;
IntPtr whandle= P.MainWindowHandle;
PostMessage(whandle, WM_KEYDOWN, (IntPtr)(Keys.X), IntPtr.Zero);
如果您具有 MainWindowHandle
,则此方法有效处理,否则不行。
It works if you have MainWindowHandle
of that process, otherwise not.
这篇关于如何将密钥发送到非活动的DirectX“ ePSXe”?窗口?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!