使用C#模拟后台进程的击键

时间:2014-07-18 15:36:09

标签: c#

我正在尝试模拟某个游戏上的击键(当它的窗口没有聚焦时),这会让我的角色按照我告诉他的方式移动。 我试过用:

PostMessage(Process.GetProcessById(PID).MainWindowHandle,WM_KEYDOWN,0x2d,0x1520001);

使用INSERT键可以正常工作。但是,在尝试模拟箭头键(右键)时:

PostMessage(Process.GetProcessById(PID).MainWindowHandle,WM_KEYDOWN,0x27,0x14d0001);

它没有按照我的预期工作。我的角色没有移动,但是当我关注聊天框游戏时(虽然游戏本身聚焦),我可以看到标记在聊天框中向右移动。

*注意:我可以使用InputSimulator类模拟箭头键:

InputSimulator.SimulateKeyDown(VirtualKeyCode.RIGHT);

^非常适合移动我的角色/使用聊天框,但唯一的问题是,要使SimulateKeyDown工作,必须关注特定窗口,这不是我正在寻找的。

我一直在寻找一段时间而未能找到答案,我希望有人能帮我解决这个问题。感谢。

1 个答案:

答案 0 :(得分:0)

尝试在向下/向上组合中发布关键事件。例如:

PostMessage(Process.GetProcessById(PID).MainWindowHandle, WM_KEYDOWN, ...);
PostMessage(Process.GetProcessById(PID).MainWindowHandle, WM_KEYUP, ...);
// Or use a single PostMessage call with a combination of KEYDOWN/KEYUP flags.

InputSimulator.SimulateKeyDown(VirtualKeyCode.RIGHT);
InputSimulator.SimulateKeyUp(VirtualKeyCode.RIGHT);