Я использую последнюю версию 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
Однако этот метод оказался слишком неточным для предполагаемого использования, поскольку степень, в которой находится курсорисправление напрямую связано с тем, насколько быстро сценарий считывает изменения (если бы он был вдвое быстрее, чем в два раза, чтобы изменения были записаны), поэтому я не вижу возможности каким-либо образом обойти этот центрирующий механизм.