繁体   English   中英

在 C# 中移动鼠标 cursor 离屏

[英]moving mouse cursor off screen in C#

我有一个 wpf window,它的高度为 2000,实际桌面高度约为 1000。显然,大约一半的 window 不在屏幕上。 即使 window 延伸到屏幕下方,鼠标也不会向下移动到该区域。 我确实希望此内容不在屏幕上,并且如果鼠标位于该 position 的元素上,我希望鼠标能够在其上移动并单击元素。 我不想更改我的屏幕分辨率,因为某些内容绝对必须不在屏幕上。 不知道如何 go 关于这个。

Cursor 分隔不是由应用程序完成,而是由 Windows 本身完成。 据我所知,没有办法让您的 cursor 指向屏幕外。

您可以通过做许多游戏所做的来模拟您想要的。 不要绘制 Windows cursor,在您的应用程序中绘制自定义 window。 强制真正的 cursor(未绘制)留在显示器的中心。 每次用户移动真正的 cursor 时,相应地移动应用程序的 cursor 并将真正的 cursor 重新放置到屏幕中央。

这会给您带来您想要的错觉,但我不认为 WPF 可以处理这个问题。

我认为这是可能的。 该程序将允许使用辅助计算机作为额外的监视器。 有几个程序可以让您知道鼠标 cursor 所在的坐标。 例如AutoIt很容易做到这一点。

在此处输入图像描述

当你安装 autoit 时,它附带了这个实用程序,它会让你知道你 position 鼠标的坐标。 当我进行屏幕截图时,鼠标没有出现,但我在鼠标所在的位置画了一个蓝点。 注意坐标是 710, 1464。现在我的屏幕分辨率是 1200 * 1920(我的显示器是旋转的)。 因此,使用 Autoit,我可以通过执行类似的操作来 position 我的鼠标 cursor

在此处输入图像描述

当我运行该 autoit 程序时,它会将鼠标移动到该位置。 这个问题的答案似乎是正确的,因为我无法将鼠标向右移动超过 1200。 换句话说,执行 MouseMove(2500,800) 将导致鼠标移动到 1200,800。 现在有趣的部分是我为什么能够将鼠标移动到(2500,800)! 如果我使用这个程序换句话说,执行MouseMove(2500,800)现在可以与 Autoit 一起使用,并且鼠标实际上会移动到另一台计算机(必须运行 maxivista)。 maxivista 表明有一种方法可以将鼠标移动到屏幕分辨率之外

如果您查看MaxiVista的屏幕截图,您会发现显示设备管理器的屏幕截图:

设备管理器 http://www.maxivista.com/pics/screenshots/vista_devicemanager_en.gif

如您所见,他们只是编写了一个虚拟显示适配器,它提供了自己的显示大小。 所以 windows 将被告知一个可用的大小,例如 2560x1600 是可能的,并允许所有 windows 和鼠标的这些边界。 现在由显示驱动程序将此虚拟屏幕的右侧部分转发到当前的真实显示适配器,以便在每个物理设备上显示右侧部分。

Windows 中没有屏幕外 cursor position。 我认为鼠标受屏幕分辨率的限制,即使 windows 不是。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM