在C#中将鼠标光标移出屏幕

时间:2009-03-18 18:47:45

标签: c# wpf windows cursor mouse

我有一个wpf窗口,其高度为2000,实际桌面高度约为1000.显然大约有一半窗口在屏幕外。即使窗口延伸到屏幕下方,鼠标也不会向下移动到该区域。我确实希望这些内容在屏幕外,我希望鼠标能够移动它并单击元素,如果鼠标位于该位置的元素上。我不想改变我的屏幕分辨率,因为一些内容绝对必须离开屏幕。不确定如何解决这个问题。

4 个答案:

答案 0 :(得分:4)

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

您可以通过执行许多游戏来模拟您想要的内容。不要绘制Windows光标,在应用程序窗口中绘制自定义光标。强制实际光标(未绘制)停留在显示器的中央。每次用户移动真实光标时,相应地移动应用程序的光标,然后将真实光标重新放置到屏幕中心。

这会产生你想要的幻觉,但我认为WPF无法解决这个问题。

答案 1 :(得分:1)

Windows中没有关闭屏幕光标位置。我认为鼠标受屏幕分辨率的限制,即使窗口没有。

答案 2 :(得分:1)

我认为这是可能的。 This program将允许使用辅助计算机作为额外的监视器。有几个程序可以让您知道鼠标光标所在的坐标。例如,AutoIt可以轻松完成。

enter image description here

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

的操作来定位鼠标光标

enter image description here

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

答案 3 :(得分:1)

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

Device Manager http://www.maxivista.com/pics/screenshots/vista_devicemanager_en.gif

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