俺言語。

自分にしか理解できない言語で書かれた備忘録

【Python】win32apiを使ってデスクトップ座標の取得

デスクトップ座標をwin32apiを使ってゲットするにはまずc言語での構造体を

python上で定義してあげる必要がある。

今回は構造体用にクラスを作ってそのインスタンスを使う。

# 構造体を定義
class _pointer(ctypes.Structure):
    _fields_ = [
        ('x', ctypes.c_long),
        ('y', ctypes.c_long),
    ]

pointer = _pointer() #←構造体を初期化

ポインタがある位置の座標を返すwin32apiは"user32.GetCursorPos"
これに先ほど作った構造体を引数で渡す。

# 構造体のポインタを引数で渡す(参照渡し)
ctypes.windll.user32.GetCursorPos(ctypes.byref(point_topleft))

すると構造体に座標が入るので必要に応じて取り出す
取り出し方は

print pointer.x
print pointer.y

取得できる座標はデスクトップ左上を(0, 0)とした座標系,

マルチディスプレイの時はxがマイナスの値になっていた。