如何将密钥发送到非活动的DirectX“ ePSXe”?窗口? [英] How can I send keys to inactive DirectX "ePSXe" window?

查看:116
本文介绍了如何将密钥发送到非活动的DirectX“ ePSXe”?窗口?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆