【问题标题】:How to hide and disable cursor globally?如何全局隐藏和禁用光标?
【发布时间】:2010-05-03 17:45:46
【问题描述】:

我有两个问题:

  1. 如何隐藏所有程序的光标?我试图通过使用隐藏光标 ShowCursor,但它只适用于我的程序。移动时光标仍然出现 光标在我的程序之外。
  2. 如何禁用所有程序的鼠标操作? 我使用 SetWindowsHookEx 来挂钩鼠标,防止其他程序处理鼠标操作。我可以挂钩点击,但问题是我无法挂钩“移动”。当我将鼠标移动到菜单或系统按钮(“最小化/恢复/关闭”)时,它们会突出显示。这意味着他们仍然可以“看到”鼠标。

谁能帮帮我?

【问题讨论】:

  • 我不确定是否允许未以提升权限运行的应用程序更改全局系统行为(这很好)。
  • 你为什么要这样做?
  • 我正在开发一个“远程控制”应用程序,我需要将鼠标和键盘事件重定向到另一台计算机。这就是原因。
  • 这解释了为什么要在窗口中隐藏鼠标光标,但不能解释为什么要在不属于您的窗口中隐藏它。

标签: c++ windows delphi


【解决方案1】:

我不禁想知道您要做什么,但最简单的方法是,假设您有一个运行良好的应用程序,当您的应用程序在前台有一个窗口时使用 SetCaptureReleaseCapture .您也可以使用ClipCursor(RECT *) 确保光标停留在您控制的窗口中。

【讨论】:

    【解决方案2】:

    您可以使用SetCursorPos 将光标保持在窗口的中心。请不要隐藏我的鼠标光标,它不是你的。

    【讨论】:

      【解决方案3】:

      全局隐藏光标很困难。您可以创建一个全屏透明窗口并在其上使用ShowCursor,但当然它也会接收所有鼠标事件。不过,也许它适用于您的特定情况,因为您还想禁用鼠标输入。

      您可以使用 SetWindowsHookExWH_MOUSE_LL 挂钩来禁用鼠标移动。如果你从你的钩子过程中返回一个非零值,鼠标光标将保持不动。

      话虽如此,听起来您确实在尝试做一些邪恶的事情,或者至少是您的用户可能不喜欢的事情。我建议您三思而后行,这是否真的是您需要的。

      【讨论】:

      • 正如我所说,WH_MOUSE_LL 适用于点击,但不适用于移动。当您将鼠标移到菜单或系统按钮上方时,它们仍会响应鼠标,尽管它们不可点击。顺便说一句,我正在开发一个不是邪恶的远程控制应用程序:)
      【解决方案4】:

      这样做的唯一正当理由(我能想象)是制作一个“售货亭”。如果这是您的目标,请搜索该问题或将其重新声明为 Kiosk 问题。

      【讨论】:

      • 我也有过这样的想法,但是在我们的“kiosk”机器上只有一个应用程序正在运行....
      • @Leslie 这是人们可能需要的东西。我实际上正在开发一个运行一个应用程序的信息亭,但该应用程序会为连接到系统的每个显示器生成一次。
      猜你喜欢
      • 2014-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多