【发布时间】:2013-06-27 18:34:27
【问题描述】:
在 Microsoft.NET Framework 中,命名空间中有一个名为 System.Windows.Forms 的 Form 类,其中定义了许多事件。 KeyPressed 事件发生在窗体本身具有输入焦点时在键盘上按下一个键的那一刻。但是,如果我希望无论窗体是否具有输入焦点,在任何时候按下某个键时都会发生一些事情,我知道我可以运行一个计时器,然后 dll 从 user32.dll 中导入 GetKeyState 或 GetAsyncKeyState 函数,并且知道任何时候按下一个键。
我可以通过 Form 的 MouseDown 事件和不使用鼠标执行相同的操作,使用相同的 user32.dll 函数和计时器,但是当我向上或向下滚动鼠标滚轮时,我可以编程会发生某些事情窗体的 MouseDown 事件。
Delta 是 MouseEventArgs 中鼠标滚轮事件的值,但它不仅会在鼠标滚轮向上或向下滚动时发生,而且我需要使用 MouseEvent 在该表单上输入焦点。
我不想依赖任何形式。我不知道将哪个整数赋予 GetKeyState 或 GetAsyncKeyState 函数以获取鼠标滚轮的状态,因此我可以在计时器频繁调用的函数的 if 中运行一段代码。
我该怎么办?它是哪个整数?是否有来自 user32 或其他 dll 的其他函数可以返回“Delta”? 如果我知道我会很高兴,所以请回答! :D
【问题讨论】:
-
这篇关于拦截全局鼠标事件的文章你可能会感兴趣:codeproject.com/Articles/29726/Detect-System-Wide-Mouse-Events
-
这不是它的工作方式。当用户滚动鼠标滚轮时,Windows 会通知您,即触发 MouseWheel 事件。没有办法问它在哪里,鼠标滚轮没有“位置”。只有改变很重要。
-
我下载了您发送给我的代码项目 pwny,但是当我尝试使用添加引用添加 MouseHunter.dll 时,我收到一个错误:错误标题 - “Microsoft Visual C# 2010 Express”,错误描述- “无法添加对‘Drive:\Path\MouseHunter\MouseHunter.dll’的引用。请确保该文件是可访问的,并且它是一个有效的程序集或 COM 组件。”,并且 dll 引用不是添加。为什么我会收到此错误?
标签: c# mouseevent