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