3

我想检测鼠标当前是否隐藏,这通常由 Windows 上的 3D 应用程序完成。这似乎比听起来更棘手,因为我找不到任何方法来做到这一点。

最好我想使用 Python 来做到这一点,但如果那不可能,我可以求助于 C。谢谢!

4

2 回答 2

1

GetCursorInfo函数返回一个CURSORINFO结构,该结构具有一个flags包含全局游标状态的字段。这会做你需要的吗?我对Python不熟悉,所以我不知道你是否可以从Python调用这个函数。

于 2012-09-17T21:15:39.343 回答
1

您需要调用该GetCursorInfo函数。这可以使用pywin32 库直接完成。或者,如果您不想安装外部 Python 库,则可以使用该ctypes模块直接从 User32.dll 访问该函数。

例子:

import ctypes

# Argument structures
class POINT(ctypes.Structure):
    _fields_ = [('x', ctypes.c_int),
                ('y', ctypes.c_int)]

class CURSORINFO(ctypes.Structure):
    _fields_ = [('cbSize', ctypes.c_uint),
                ('flags', ctypes.c_uint),
                ('hCursor', ctypes.c_void_p),
                ('ptScreenPos', POINT)]

# Load function from user32.dll and set argument types
GetCursorInfo = ctypes.windll.user32.GetCursorInfo
GetCursorInfo.argtypes = [ctypes.POINTER(CURSORINFO)]

# Initialize the output structure
info = CURSORINFO()
info.cbSize = ctypes.sizeof(info)

# Call it
if GetCursorInfo(ctypes.byref(info)):
    if info.flags & 0x00000001:
        pass  # The cursor is showing
else:
    pass  # Error occurred (invalid structure size?)
于 2012-09-17T21:23:02.207 回答