gpt4 book ai didi

python - 如何将鼠标限制在多显示器系统上的特定显示器上?

转载 作者:行者123 更新时间:2023-12-01 04:50:18 24 4
gpt4 key购买 nike

我有一个多显示器系统,运行两个 Python3.x Qt 应用程序 (PySide)。我成功指定了哪个应用程序在哪个显示器上运行。一个应用程序(以及一个显示器)是用户输入终端(基本上是一个信息亭),而另一个应用程序(以及另一个显示器)仅用于显示信息。

如何将鼠标限制在信息亭显示器上?我知道我可以“禁用”第二个应用程序,以便忽略鼠标和键盘事件,但我真的宁愿将实际的鼠标移动限制在第一个监视器上。

这是否必须使用低级 Windows (Windows 7) 函数,或者我可以在应用程序中用 Python 实现某些功能来处理它吗?

如果您有任何意见或指导,我们将不胜感激!

谢谢!

最佳答案

编辑:最初发布这个答案是为了回应一条评论,要求提供一些我已经编写的代码,这些代码不是用 python 编写的,但实现了目标。该脚本位于更下方,这是一个仅适用于 Windows 的 Python 脚本,但将使用 win32api 执行相同的功能。

import win32api

# set these to whatever you want
xMin = 300
xMax = 800

running = True
while running:
x, y = win32api.GetCursorPos()
if x < xMin:
win32api.SetCursorPos((xMin,y))
elif x > xMax:
win32api.SetCursorPos((xMax,y))

为@PavelStrakhov 发帖。这是一个 Java 脚本,它将把光标保持在一定的 x 坐标范围内(跨平台)。

要运行它,请将以下代码保存为 mouseWatcher.java,运行 $ javac mouseWatcher.java,然后运行 ​​$ java mouseWatcher 将启动它。

但要小心。如果您运行此程序并且不知道如何在没有鼠标的情况下停止它,并且您设置的范围不允许您将鼠标移动到需要的位置,那么您就赢了无法阻止它。 :-)

/* to control the mouse */
import java.awt.AWTException;
import java.awt.Robot;

/* to get the mouse position */
import java.awt.MouseInfo;

public class mouseWatcher {

public static void main(String[] args) {
/* the minimum and maximum x positions the cursor is allowed at */
int xMin = 200;
int xMax = 800;

/* repeat forever */
boolean running = true;
while (running) {
/* get the current cursor position */
int[] position = cursorGetPos();

/* if they try to move it to the left of the acceptable area */
if (position[0] < xMin)
/* move the cursor the left most acceptable point */
mouseMove(xMin, position[1]);

/* if they try to move it to the right of the acceptable area */
else if (position[0] > xMax)
/* move the cursor to the right most acceptable point */
mouseMove(xMax, position[1]);
}
}

private static void mouseMove( int x, int y) {
try {
Robot r = new Robot();
r.mouseMove(x, y);
} catch (AWTException e) {
throw new RuntimeException(e);
}
}

private static int[] cursorGetPos() {
int X = MouseInfo.getPointerInfo().getLocation().x;
int Y = MouseInfo.getPointerInfo().getLocation().y;
int[] coords = {X,Y};
return coords;
}

private static void sleep( int milliseconds ) {
try {
Robot r = new Robot();
r.delay(milliseconds);
} catch(AWTException e) {
throw new RuntimeException(e);
}
}
}

关于python - 如何将鼠标限制在多显示器系统上的特定显示器上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28616409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com