如何使用c#在windows上调用onmousedown方法

发布于 2025-01-04 05:51:45 字数 339 浏览 1 评论 0原文

我需要在按 W 时使用鼠标左键单击来执行操作,例如:

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

我想将 cruse 移动到文件,然后按 w 并拖动当我释放 w 时,它会掉落,

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

非常感谢您的帮助,,,

i need to perform the action done by using left mouse click when i press W for example:

i want to move the cruse to a folder and then press w so the folder open

i want to move the cruse to a file and press w and drag it and drop when i release w

i tried to use windowsFrom and performing the onKeyPress() and it calls onMouseDown() but of course it means that the onMouseDown() function will be called inside the form and what i need is a system behavior,,,, i am using windows 7 64 on VS2010 but i would like if it is some thing global for all windows

thanks a lot for helping,,,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

久隐师 2025-01-11 05:51:45

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

我建议查看此问题的一些答案以获取全局热键: 解决 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); 

The first step you'll need to capture Key Down events in an external application is define a global hotkey:

I recommend checking out some of the answers for this question for a global hot-key: Best way to tackle global hotkey processing in c#? or this CodeProject article: A Simple C# Global Low Level Keyboard Hook

Then, as M. Babcock said you'll need to send the mouse-down events. The link he provided in the comment is a good one. I'm repeating it here for completeness.

How to simulate Mouse Click in C#?

If you actually need to send keyboard inputs, you can use InputSimulator which is something I have advocated (and used in the past) and it provides a very flexible (and reliable) wrapper that is capable of simulating keyboard events.

It wraps SendInput under the hood but abstracts away all the PInvoke calls and other complexity.

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

or

InputSimulator.SimulateModifiedKeyStroke(VirtualKeyCode.CONTROL, VirtualKeyCode.VK_C); 
陌路终见情 2025-01-11 05:51:45

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

Use a boolean flag for the clicking, and set it on both by clicking or pressing your hotkey. For instance, this flag should be declared inside the form, and the events KeyDown and MouseDown set it true, while KeyUp and MouseUp set it false. For all your actions now you use this flag for verifying the click. (Not sure if it would works in Windows app, in XNA it works fine). For using outside the class, just set this flag as a public property.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文