我如何将密钥发送到非活动的DirectX“ ePSXe”窗口?

问题描述 投票:-1回答:1

我需要使用C#将密钥发送到无效的“ ePSXe”窗口。我使用Spy ++获取了窗口的句柄,但是当我使用此代码发送键“ x”时,却什么也没有。我该怎么办?

我尝试将Msg的不同值设置为0x01000x01010x0102,但没有任何效果。我也尝试了SendMessage,结果是相同的。

[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。Sending keys to a DirectX Game

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

c# directx sendmessage postmessage
1个回答
0
投票
           Process P = ....get process; 
           IntPtr whandle= P.MainWindowHandle;
            PostMessage(whandle, WM_KEYDOWN, (IntPtr)(Keys.X), IntPtr.Zero);

如果您具有该进程的MainWindowHandle,则可以,否则不可以。

© www.soinside.com 2019 - 2024. All rights reserved.