0

当我按下 W 时,我需要执行通过使用鼠标左键单击完成的操作,例如:

我想将 cruse 移动到一个文件夹,然后按 w 使文件夹打开

我想将 cruse 移动到一个文件并按下 w 并在我释放 w 时拖放它

我尝试使用 windowsFrom 并执行onKeyPress()它调用onMouseDown(),但当然这意味着该onMouseDown()函数将在表单内调用,我需要的是系统行为,,,,我在 VS2010 上使用 windows 7 64 但我想如果它对所有窗口都是全局的

非常感谢您的帮助,,,

4

2 回答 2

2

您需要在外部应用程序中捕获 Key Down 事件的第一步是定义一个全局热键:

我建议查看这个问题的一些答案以获得全局热键:Best way to address global hotkey processing in c#? 或此 CodeProject 文章: 一个简单的 C# 全局低级键盘挂钩

然后,正如 M. Babcock 所说,您需要发送鼠标按下事件。他在评论中提供的链接是一个很好的链接。为了完整起见,我在这里重复一遍。

如何在 C# 中模拟鼠标点击?

如果您确实需要发送键盘输入,您可以使用InputSimulator,这是我提倡(并且在过去使用过)的东西,它提供了一个非常灵活(且可靠)的包装器,能够模拟键盘事件。

它在底层封装了 SendInput,但抽象出所有 PInvoke 调用和其他复杂性。

InputSimulator.SimulateKeyDown(VirtualKeyCode.CTRL);
InputSimulator.SimulateKeyPress(VirtualKeyCode.KEYS_V);
InputSimulator.SimulateKeyUp(VirtualKeyCode.CTRL);

或者

InputSimulator.SimulateModifiedKeyStroke(VirtualKeyCode.CONTROL, VirtualKeyCode.VK_C); 
于 2012-02-11T17:03:31.647 回答
0

使用布尔标志进行单击,并通过单击或按下热键将其设置为两者。例如,这个标志应该在表单中声明,并且事件 KeyDown 和 MouseDown 将其设置为 true,而 KeyUp 和 MouseUp 将其设置为 false。现在,对于您的所有操作,您都使用此标志来验证点击。(不确定它是否适用于 Windows 应用程序,在 XNA 中它可以正常工作)。要在课堂外使用,只需将此标志设置为公共属性。

于 2012-02-11T16:32:52.023 回答