首页 > 解决方案 > 如何将密钥发送到非活动的 DirectX“ePSXe”窗口?

问题描述

我需要使用 C# 将密钥发送到非活动的“ePSXe”窗口。我使用 Spy++ 获得了窗口的句柄,但是当我使用此代码发送密钥“x”时,我什么也没得到。我应该怎么办?

Msg我尝试了as和的不同值0x0100,但没有任何效果。我也试过了,结果是一样的。0x01010x0102SendMessage

[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 ..”,但没有发送字母键。

SendMessage(p, 0x0100, (IntPtr)Keys.F4, IntPtr.Zero);
SendMessage(p, 0x0101, (IntPtr)Keys.F4, IntPtr.Zero);

我认为发送到不活动的游戏应用程序并不容易,但是这个解决方案对我帮助很大,但我必须专注于 ePSXe。 将密钥发送到 DirectX 游戏

我仍在寻找可以发送到非活动游戏窗口的解决方案。

标签: c#directxsendmessagepostmessage

解决方案


Process P = ...get process; 
IntPtr whandle= P.MainWindowHandle;
PostMessage(whandle, WM_KEYDOWN, (IntPtr)(Keys.X), IntPtr.Zero);

如果你有MainWindowHandle这个过程,它就可以工作,否则就不行。


推荐阅读