3

マウスが現在非表示になっているかどうかを検出したいのですが、これはWindowsの3Dアプリケーションでよく行われています。これを行う方法が見つからないため、これは思ったよりも難しいようです。

できればPythonを使用してこれを実行したいのですが、それが不可能な場合はCに頼ることができます。ありがとうございます。

4

2 に答える 2

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 に答える
1

このGetCursorInfo関数は、グローバル カーソル状態を含むフィールドをCURSORINFO持つ構造体を返します。flagsこれはあなたが必要とすることをしますか?私は Python に詳しくないので、Python からこの関数を呼び出せるかどうかわかりません。

于 2012-09-17T21:15:39.343 に答える