使用Python临时改变光标
我正在写一个脚本,这个脚本可以拦截触摸板的输出,然后经过一些处理后再发送到Windows系统里。所以这个过程没有图形界面(GUI)。我想在某些特定的光标行为发生时,临时改变光标的样子。我在网上搜索了很多,但发现很少有帖子提到使用win32api.SetCursor(),而且这个方法根本不管用。大多数帖子都在讲如何用Tkinter或wxPython来改变光标。有没有其他方法可以在整个系统中改变光标呢?
2 个回答
0
import win32con
import win32api
import win32gui
import ctypes
import time
import atexit
cursor = win32gui.LoadImage(0, 32512, win32con.IMAGE_CURSOR,
0, 0, win32con.LR_SHARED)
save_system_cursor = ctypes.windll.user32.CopyImage(cursor, win32con.IMAGE_CURSOR,
0, 0, win32con.LR_COPYFROMRESOURCE)
cursor = win32gui.LoadImage(0, "file.cur", win32con.IMAGE_CURSOR,
0, 0, win32con.LR_LOADFROMFILE);
ctypes.windll.user32.SetSystemCursor(cursor, 32512)
ctypes.windll.user32.DestroyCursor(cursor);
我希望这能帮到你
1
使用下面的代码后,光标在整个系统中都被改变了。不过在退出程序后,我必须把光标恢复成箭头形状。如果有其他更好的方法,我会很感激你的回复。
from ctypes import *
import win32con
SetSystemCursor = windll.user32.SetSystemCursor #reference to function
SetSystemCursor.restype = c_int #return
SetSystemCursor.argtype = [c_int, c_int] #arguments
LoadCursorFromFile = windll.user32.LoadCursorFromFileA #reference to function
LoadCursorFromFile.restype = c_int #return
LoadCursorFromFile.argtype = c_char_p #arguments
CursorPath = "../cursor/MyCross.cur"
NewCursor = LoadCursorFromFile(CursorPath)
if NewCursor is None:
print "Error loading the cursor"
elif SetSystemCursor(NewCursor, win32con.IDC_ARROW) == 0:
print "Error in setting the cursor"