如何捕获鼠标移动事件

2023-11-23

我想在我的主窗体中捕获鼠标移动事件。虽然我能够连接MouseEventHandler对于主窗体,当光标位于 UserControl 或任何其他控件上时,该事件不再触发。如何确保我始终掌握鼠标位置。


您可以使用低级鼠标钩。看this示例并检查 HookCallback 中的 WM_MOUSEMOVE 消息。

您还可以使用 IMessageFilter 类来捕获鼠标事件并触发事件来获取位置(注意:这只会获取窗口上方的位置,而不是窗口之外的位置):

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace GlobalMouseEvents
{
   public partial class Form1 : Form
   {
      public Form1()
      {
         GlobalMouseHandler gmh = new GlobalMouseHandler();
         gmh.TheMouseMoved += new MouseMovedEvent(gmh_TheMouseMoved);
         Application.AddMessageFilter(gmh);

         InitializeComponent();
      }

      void gmh_TheMouseMoved()
      {
         Point cur_pos = System.Windows.Forms.Cursor.Position;
         System.Console.WriteLine(cur_pos);
      }
   }

   public delegate void MouseMovedEvent();

   public class GlobalMouseHandler : IMessageFilter
   {
      private const int WM_MOUSEMOVE = 0x0200;

      public event MouseMovedEvent TheMouseMoved;

      #region IMessageFilter Members

      public bool PreFilterMessage(ref Message m)
      {
         if (m.Msg == WM_MOUSEMOVE)
         {
            if (TheMouseMoved != null)
            {
               TheMouseMoved();
            }
         }
         // Always allow message to continue to the next filter control
         return false;
      }

      #endregion
   }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何捕获鼠标移动事件 的相关文章

  • 将 ARGB 拆分为字节值

    我有一个 ARGB 值存储为 int 类型 它是通过调用 ToArgb 来存储的 我现在想要来自 int 值的各个颜色通道的字节值 例如 int mycolor 16744448 byte r g b a GetBytesFromColor
  • 如何创建语法突出显示文本框[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何使用 C Net 创建语法突出显示文本框 Take 闪烁网 http scintillanet codeplex com 并采取其
  • 更改图像颜色与透明背景

    我需要使用 c System Drawings 将透明背景上带有绿色圆圈的图像加载到位图图像中 这是最简单的部分 但是 我需要在将其添加到更大的图像之前更改圆圈的颜色 而不影响周围的透明度 就我而言 我需要将圆圈颜色更改为黄色并将其添加为太
  • C++:字符串流有什么好处?

    谁能告诉我一些在 C 中使用字符串流的实际例子 即使用流插入和流提取运算符输入和输出到字符串流 您可以使用字符串流来转换任何实现operator lt lt 到一个字符串 include
  • 等待运算符错误

    我的代码有问题 我怎么解决这个问题 这个问题出现在await操作符中 public MyModel HttpClient client new HttpClient HttpResponseMessage response await cl
  • Monitor.Pulse & Wait - 意外行为

    http www codeproject com Articles 28785 Thread synchronization Wait and Pulse demystified http www codeproject com Artic
  • 提取单花括号内的值

    我想要一个收藏 value 一个字符串使用正则表达式 例如 lorem ipsum field1 lorem ipsum field2 lorem ipsum field1 lorem ipsum field2 field3 我会得到 fi
  • C++ 并行任务的开销

    我有以下简单的功能 include
  • 如何在Unity Inspector中创建多维数组?

    如何在 Unity Inspector 中创建枚举多维数组并使其可序列化 以便我可以从不同的脚本调用它 public enum colors red blue green yellow cyan white purple public in
  • 是否自初始化 'A a = a;'允许吗?

    此代码在运行时在复制构造函数中失败 但编译器 MSVS2008 没有发出警告 您能解释一下 最好引用标准 这段代码是否非法或什么 我理解 A a a 永远不应该写在第一位 但我正在寻找理论背景 class A public A p new
  • 如何解析多态 JSON 数组?

    我有一个 JSON 格式的文件 其中包含个人用户的记录 一些用户的记录中间有一个评论字段 我只想解析顶级项目 全名 贡献者姓名 电子邮件 使用 Newtonsoft JSON 解析器 但我似乎无法让它识别单个对象 当我将整个字符串解析为一个
  • 将旧的 Unity 代码升级到 Unity 5

    在触发按钮上播放动画的代码似乎不起作用 我在 Youtube 上看到了一个视频 内容很简单animation Play 它可以在该视频上运行 但我无法让它在我的计算机上运行 我做错了什么还是团结改变了它 请帮助我在网上找不到解决方案 所有
  • 如何将 Boost Spirit 自动规则与 AST 结合使用?

    编辑 当我想在另一个规则上使用它时 我扩展了 sehe 的示例以显示问题 http liveworkspace org code 22lxL7 http liveworkspace org code 22lxL7 17 我正在尝试提高 Bo
  • C++ 模板参数数量错误(2,应该是 1)

    我使用 C 并行快速排序程序进行了测试 如下所示 首先使用列表作为容器 然后我转移到通用容器类型 但它报告了标题错误 可以帮忙解决这个问题吗 include
  • 链接到ntdll.lib并调用ntdll.dll内部的函数

    我最近正在对私有 API 进行一些研究 我尝试调用诸如NtOpenFile在 ntdll dll 中LoadLibrary and GetProcAddress在运行时 幸运的是 它成功了 今天早上我在电脑上进行了文件搜索 发现ntdll
  • Rx 在不同的线程上生产和消费

    我试图通过此处的示例代码来简化我的问题 我有一个生产者线程不断地输入数据 并且我尝试在批次之间添加时间延迟来对其进行批处理 以便 UI 有时间渲染它 但结果并不如预期 生产者和消费者似乎在同一个线程上 我不希望批处理缓冲区在正在生成的线程上
  • 如何在realm-dotnet中存储System.Collections.Generic.Dictionary

    我正在尝试将 Realm NET 集成到我的 uwp 项目中 我想知道是否有任何方法可以在 Realm dotnet 库中存储 System Collections Generic Dictionary 我试过这个 public class
  • Selenium - 模式对话框存在 - 如何接受信息?

    我有以下问题 在页面上提交一些日期后 我有一个如图所示的模式对话框 我想单击 ENTER 来浏览该模式 但它不起作用 我有以下代码 driver FindElement By CssSelector input submit Click A
  • 从其对象获取结构体字段的名称和类型

    例如 我有一个类似这样的结构 struct Test int i float f char ch 10 我有一个该结构的对象 例如 Test obj 现在 我想以编程方式获取字段名称和类型obj 是否可以 顺便说一句 这是 C 你正在要求C
  • 从 C/C++ 程序进行 Ping

    我想编写一个 C 或 C 程序 给定一个 IP 地址 对其进行 Ping 然后根据 Ping 是否成功执行进一步的操作 这个怎么做 尽情享受Ping 页面 http www ping127001 com pingpage htm 其中有一个

随机推荐

  • 具有不同查询参数的两种 GET 方法

    我们可以创建相同的 GET URI 但具有不同的查询参数吗 例如 我有两个 REST GET URI questions ask type rest questions ask byUser john 现在 REST 服务不会将两个 GET
  • Camel http4 使用 Https 上的基本身份验证下载文件

    我正在尝试从以下位置下载文件Https需要基本身份验证的 url 我正在使用 HTTP4 我正在尝试从网址下载 文件下载后 我需要将其保存到文件夹中 这是我的代码的样子 from xxx to http4 ebc cybersource c
  • 以编程方式在另一个桌面(空间)中打开 NSWindow

    在我的 OSX 项目中 我想要 识别 NSWindow 所在的桌面 公开空间之一 在确定的 Space 中打开 NSWindow 而不仅仅是在当前 Space 上 有没有办法完成这些简单的任务 浏览文档 NSWindowController
  • “void”是函数的有效返回值吗?

    private void SaveMoney string id public void DoSthWithMoney string action string id if action save return SaveMoney stri
  • 在WPF DataGrid中通过列标题获取列索引

    如何获得Column索引或Column DisplayIndex从它的Column Header in WPF DataGrid 我知道Column Header 想要得到column index 你可以用DisplayIndex 请注意
  • 在 netbeans 中为 .dll/.so 文件提供“java.library.path”

    我如何给出路径 dll or sonetbeans 中的文件以使用以下方式加载库 System loadLibrary Foo I read 这在 Netbeans 页面上 但无法帮助我 因为它给出了不满意的链接错误 这是我尝试过的两件事
  • wymeditor 无法保存插入的 iframe

    Wym编辑器 http wymeditor org 总是删除插入的 iframe 的内容 所以我无法将 vimeo 播放器块添加到我的页面 我怎样才能避免它 问候 阿列克谢 扎哈罗夫 Since 2011 年 5 月 31 日 WYMedi
  • Windows 上 MBCS 和 UTF-8 的区别

    我正在阅读有关 Windows 上的字符集和编码的信息 我注意到 Visual Studio 编译器 针对 C 中有两个编译器标志 称为 MBCS 和 UNICODE 它们之间有什么区别 我不明白的是 UTF 8 在概念上与 MBCS 编码
  • 在 HTML5 canvas 元素内移动矩形(像素)区域的最快方法是什么

    我想实现 HTML5 canvas 元素内容的垂直滚动 我不想再次渲染整个内容 相反 我想将整个内容向下 向上移动 并仅渲染已滚动到视图中的区域 我尝试过getImageData and putImageData函数 但在我的测试中它们几乎
  • linux中有类似COM0COM这样的程序吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我在Windows中使用com0com进行程序测试 linux下有没有类似com0com的程序 我知道有 pts ptmx 但我想要的是一个独立的程
  • Google 地球与 Google 地图 API v3 集成了吗?

    我正在尝试将 Google 地球集成到 Google 地图中 我发现它是possible在 v2 中 但我找不到任何关于如何使用 v3 执行此操作的文档 不幸的是 这尚未在 Google Maps API v3 中实现 请参阅相应的tick
  • groupByKey 是否比 reduceByKey 更受青睐

    我总是用reduceByKey当我需要对 RDD 中的数据进行分组时 因为它在打乱数据之前执行映射端缩减 这通常意味着更少的数据被打乱 从而获得更好的性能 即使当map端reduce函数收集了所有值并且没有实际减少数据量时 我仍然使用red
  • 在(据称)高性能代码中使用 GetCurrentMethod

    出于记录目的 我们应用程序中的一些方法包括以下行 Dim Log As ILog GetLog Reflection MethodBase GetCurrentMethod DeclaringType 我对反思有一种可以说是非理性的恐惧 我
  • 如何从java调用C#函数[重复]

    这个问题在这里已经有答案了 我需要从 java 调用 C 函数 为此我创建了以下内容 我创建了一个java头文件Authenticator h 代码如下 include
  • 循环遍历数组并成对输出(每个第二个元素的分隔符)

    我有一个包含匿名元素的数组 元素通过 php 添加到数组中 如下所示 playlist array while databaseloop playlist a title playlist a length echo json encode
  • 通用集合中的记录相等性

    假设您有一条带有重载相等运算符的记录 TSomeRecord record Value String class operator Equal Left Right TSomeRecord Boolean end 实现比较字符串值 如果根据
  • Linux中每个进程的最大线程数

    我编写了一个简单的程序来计算Linux Centos 5 中一个进程可以拥有的最大线程数 这是代码 int main pthread t thrd 400 for int i 0 i lt 400 i int err pthread cre
  • NuGet 包引用复制 dll 本地

    我需要将 NuGet dll 的 Copy Local 设置为 false 在此之前 我使用了包配置格式 一切正常 迁移到后封装参考格式 我找不到如何做到这一点的方法 有人可以帮助我吗 您可以使用私有资产 从文档复制
  • 使用 Hibernate API 进行 Java 字符串日期验证

    我正在尝试验证字符串日期 using javax validation 休眠验证 我需要检查给定的字符串日期应该是过去的并且它应该是正确的yyyyMMdd具有所有限制的格式 例如闰年 30th 31st day public class U
  • 如何捕获鼠标移动事件

    我想在我的主窗体中捕获鼠标移动事件 虽然我能够连接MouseEventHandler对于主窗体 当光标位于 UserControl 或任何其他控件上时 该事件不再触发 如何确保我始终掌握鼠标位置 您可以使用低级鼠标钩 看this示例并检查