2015-09-12 3 views
1

При использовании win32api из pywin я получаю неправильные значения для позиции курсора. Мое разрешение экрана - 1920x1080, но когда я использую GetCursorPos(), у меня есть (0,0) в верхнем левом углу и (1535,863) в правом нижнем углу. Код, я использую выглядит следующим образом:Win32api не дает правильные координаты с GetCursorPos() в python

import win32api 

def getCursor(): 
    print win32api.GetCursorPos() 

Я пытаюсь это с помощью Python 2.7 на Windows 10, но я также получаю эту ошибку в Python 2.6 на Windows 8. Есть ли какое-либо решение или обходной путь для этой проблемы ?

+0

Я получаю правильные позиции. (0, 0) вверху слева и (1919, 1199) внизу справа. Windows 10, Python 2.7 – KobeJohn

ответ

5

Вы подпадаете под категорию DPI virtualization. Ваше приложение не объявило о высоком уровне DPI, и у вас есть масштабирование шрифта на 125%.

Если вы хотите избежать виртуализации DPI, добавьте опцию высокого разрешения DPI в манифест приложения или позвоните либо SetProcessDPIAware, либо SetProcessDPIAwareness.

+1

'import ctypes' ' user32 = ctypes.windll.user32' 'user32.SetProcessDPIAware()' Это то, что вы имеете в виду? – KobeJohn

+0

@Kobe Да, это сделало бы это –

+0

Обратите внимание, что 'SetProcessDPIAware' устарел. –