繁体   English   中英

是否可以防止以全屏模式运行的进程修改鼠标指针的移动?

[英]Is it possible to prevent a process that is running in full screen mode from modifying mouse pointer movement?

我在此示例中使用的是Windows 10的最新版本。 该应用程序在处于特定状态时,通过使其不可见,居中并始终使其在移动时始终返回原始位置,来防止鼠标指针触碰屏幕边缘。 在后台运行监视鼠标移动的简单python脚本时,可以观察到此行为。 鼠标指针仅向拖动方向移动几个像素,然后返回到屏幕中心。

问题是,是否有可能在后台运行某个程序,以防止这种指针操作,并且即使主程序处于上述状态,也允许鼠标自由移动。 我看到的可能性是要么以某种方式更改正在运行的程序(鉴于已经将其编译为二进制文件,这将非常困难),或者在后台运行一些可以直接访问原始鼠标输入并计算正确值的脚本给定时间的光标位置。

我实现此目标的第一个尝试是检测并累加光标的所有次要位置变化(在此状态下为屏幕中间(960,600),然后将其添加到光标坐标中,然后再输入州。 在此,按下键“ v”时,主程序进入此居中状态:

# -*- coding: utf-8 -*-
import keyboard
from time import sleep
import win32api, win32con, win32ui
import numpy

keypress = False
key = 'v'
ww= False

while True:
    curpos = win32api.GetCursorPos()
    if ww:
        if curpos != (960, 600)):
            finalpos = numpy.add(finalpos, numpy.subtract(curpos,initpos))
            initpos = curpos    
    if keypress and not keyboard.is_pressed(key):
        sleep(0.01)
        win32api.SetCursorPos(finalpos)
        keypress = False
        pass
        ww= False
    elif keyboard.is_pressed(key) and not keypress:
        initpos = curpos
        finalpos = curpos
        keypress = True
        ww = True

但是,由于校正光标位置的程度与脚本读取更改的速度直接相关(如果更改的速度是读取速度的两倍,则该方法的两倍),因此该方法对于预期的用途来说太不准确了。会被记录),因此我看不到完全绕开这种居中机制的任何方法。

简短答案:否

长答案:

有多种方法可以实现指针锁定。 天真的方法是隐藏和重新放置光标。 您正在有效地尝试抵消指针锁定的影响。 但是执行指针锁定的应用程序(例如游戏)是理想的效果。 所以我不明白您为什么要这么做。

您面临的问题是竞争条件,脚本和应用程序试图更改相同的值; 鼠标光标的位置。 运行最快的胜利的应用程序,但结果是一团糟。

如果执行指针锁定的应用程序太烦人了,为什么还要在同一台计算机上同时运行它。 如果您确实需要在使用系统时在后台运行它,为什么不使用多个虚拟桌面,然后将应用程序放置在一个桌面上,然后再使用另一个桌面。

暂无
暂无

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

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