マウスが現在非表示になっているかどうかを検出したいのですが、これはWindowsの3Dアプリケーションでよく行われています。これを行う方法が見つからないため、これは思ったよりも難しいようです。
できればPythonを使用してこれを実行したいのですが、それが不可能な場合はCに頼ることができます。ありがとうございます。
関数を呼び出す必要があり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?)
このGetCursorInfo
関数は、グローバル カーソル状態を含むフィールドをCURSORINFO
持つ構造体を返します。flags
これはあなたが必要とすることをしますか?私は Python に詳しくないので、Python からこの関数を呼び出せるかどうかわかりません。