在控制台应用程序中捕获鼠标滚轮事件

3

有没有一种方法可以在使用C#编写的控制台应用程序中捕获鼠标滚轮事件,就像您会在GUI /窗口应用程序中捕获鼠标滚轮事件一样?

我想这样做是为了只滚动控制台中文本的一部分。

我已经在Google上搜索过了,但是我能找到的都是关于窗口应用程序的鼠标滚轮事件。


2
你需要使用P/Invoke调用ReadConsoleInput函数。 - Hans Passant
2个回答

7
调用 ReadConsoleInput 函数。当您在控制台上旋转滚轮时,将收到一个 MOUSE_WHEELED 事件。

3
您可以通过以下“两个”步骤实现:
  1. 创建全局系统钩子以捕捉鼠标滚轮事件(参考示例这里

  2. 使用PInvoke检查您的控制台是否处于活动状态(可以在此处找到示例:确定当前应用程序是否已激活(具有焦点)

  3. 您可以扩展步骤2中的功能,获取窗口矩形请参见此处,并将鼠标位置与窗口位置相交


谢谢,我会尝试让它工作。然而,也许我应该在我的帖子中提供这些信息,但我在Ubuntu上使用Mono Develop。鉴于Ubuntu不包含执行此操作所需的所有dll文件,这是否适用于Linux系统,或者在Linux系统上有其他方法可以执行此操作? - Gabi Barrientos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接