Как изменить изображение курсора в Python - PullRequest
1 голос
/ 02 мая 2019

Я хочу изменить изображение курсора (везде на экране), когда моя программа работает.

Я пытаюсь загрузить изображение с помощью win32gui, а затем использовать win32api, чтобы изменить изображение курсора, но что-то не так, и мой курсорне отображается изображение моего курсора map.cur

import win32api
import time
import win32gui
import win32con

x = win32gui.LoadImage(0,'map.cur',win32con.IMAGE_CURSOR,0,0,win32con.LR_LOADFROMFILE)
win32api.SetCursor(x)

time.sleep(5)

1 Ответ

0 голосов
/ 04 мая 2019

Смена системного курсора не рекомендуется.Ради любопытства, это можно сделать с помощью SetSystemCursor, например

ctypes.windll.user32.SetSystemCursor(hcursor, 32512) #OCR_NORMAL

См. документацию для OCR_NORMAL и другие константы курсора.

Я быэто вообще не рекомендуется для python, потому что восстановить курсор сложно, поэтому пользователь будет застревать с новым курсором, если он не изменит курсор через системные настройки.Вы можете попытаться сохранить старый курсор и восстановить его, но этот метод завершится неудачно, если ваша программа выйдет ненормально.

hold = win32gui.LoadImage(0, 32512, win32con.IMAGE_CURSOR, 
                          0, 0, win32con.LR_SHARED )
hsave = ctypes.windll.user32.CopyImage(hold, win32con.IMAGE_CURSOR, 
                                       0, 0, win32con.LR_COPYFROMRESOURCE)
hnew = win32gui.LoadImage(0, 'file.cur', 
                             win32con.IMAGE_CURSOR, 0, 0, win32con.LR_LOADFROMFILE);
ctypes.windll.user32.SetSystemCursor(hcursor, 32512)
time.sleep(5)

#restore the old cursor
ctypes.windll.user32.SetSystemCursor(hsave, 32512)
...