c# - 如何将密钥发送到非活动的 DirectX“ePSXe”窗口?
问题描述
我需要使用 C# 将密钥发送到非活动的“ePSXe”窗口。我使用 Spy++ 获得了窗口的句柄,但是当我使用此代码发送密钥“x”时,我什么也没得到。我应该怎么办?
Msg
我尝试了as和的不同值0x0100
,但没有任何效果。我也试过了,结果是一样的。0x0101
0x0102
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。 将密钥发送到 DirectX 游戏。
我仍在寻找可以发送到非活动游戏窗口的解决方案。
解决方案
Process P = ...get process;
IntPtr whandle= P.MainWindowHandle;
PostMessage(whandle, WM_KEYDOWN, (IntPtr)(Keys.X), IntPtr.Zero);
如果你有MainWindowHandle
这个过程,它就可以工作,否则就不行。
推荐阅读
- java - GraphQL Java 期待查询参数
- java - 我想计算肠子的年龄总和,不知道怎么做?
- python - 抓取大量数据时随机出现“ValueError:没有找到匹配正则表达式'.+'的表”
- java - 将 Kotlin 代码翻译成 Java - 理解语法
- android - 显示 BottomSheetDIalogFragment 时如何禁用应用程序的调光?
- python - 将 df 重新采样到更小的时间步并平均计数
- java - SyntaxError:无法在“文档”上执行“评估”错误,将参数作为 xpath 传递?
- c# - 确保在编译时我的项目的使用者不需要我的项目的 PackageReference
- sql-server - 使用 SQL Server 2012 查找两条 SQL 记录之间的时间延迟
- javascript - 获取用户头像并在频道中发送