【问题标题】:how to call onmousedown method on windows using c#如何使用c#在windows上调用onmousedown方法
【发布时间】:2012-03-03 17:45:16
【问题描述】:

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

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

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

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

非常感谢您的帮助,,,

【问题讨论】:

  • 如果您尝试模拟的操作仅限于在 Windows 资源管理器中打开文件夹或文件,那么最好只使用 Process.Start 打开它们。否则,请查看我上面链接的相关问题的答案,他们应该可以解决问题。

标签: c# mouseevent mouseover onmousedown


【解决方案1】:

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

【讨论】:

  • 我的问题是调用全局鼠标按下方法而不是 keydown 等等
【解决方案2】:

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

我建议查看此问题的一些答案以获得全局热键:Best way to tackle global hotkey processing in c#? 或此 CodeProject 文章:A Simple C# Global Low Level Keyboard Hook

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

How to simulate Mouse Click in C#?

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

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

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

InputSimulator.SimulateModifiedKeyStroke(VirtualKeyCode.CONTROL, VirtualKeyCode.VK_C); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多