俺言語。

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

ctypes

【Python】GetWindowTextで取得できない文字列を取得する方法(win32api SendMessage WM_GETTEXT)

GetWindowTextで文字列が取得できない場合(他プロセスのコントロール文字列は取得できないらしい、意味不明)は指定のハンドルにメッセージを投げて文字列を取得する。投げるメッセージの定数はwinuser32.h内に記載されている。ハンドルはspy++等で調べること…

【Python】ウィンドウのタイトル文字列を取得する方法(win32api user32 GetWindowText)

win32apiのGetWindowTextを使ってウィンドウの文字列を取得する方法 1.EnumWindowsでトップレベル(アクティブという意味ではない)のウィンドウハンドルを取得 EnumWindowsは引数にコールバック関数が必要なのでコールバック関数を定義↓ 2.GetWindowTextLengt…

【Python】マウス左クリックした位置の画面座標を取得しコンソールに出力

win32apiの user32.GetCursorPosとuser32.GetAsyncKeyStateを組み合わせて 左クリックした位置の座標を取得し,コンソールに出力するプログラム下記は2回クリックして1回目が左上,2回目を右下とする矩形の座標を呼び出し元に返すプログラム # -*- coding: ut…

【Python】win32apiを使ってあるキーが押されたか検知する

関数名は user32.GetAsyncKeyState(vk_leftbutton) キーボードだけでなくマウスクリックも検知できる。戻り値が0x8000, 2進数だと16bitで 0b1000 0000 0000 0000 が返ってこれば押されてると判定。 押されていない時の戻り値は確か0だったはず。引数にはバ…

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

デスクトップ座標をwin32apiを使ってゲットするにはまずc言語での構造体をpython上で定義してあげる必要がある。今回は構造体用にクラスを作ってそのインスタンスを使う。 # 構造体を定義 class _pointer(ctypes.Structure): _fields_ = [ ('x', ctypes.c_lo…

【Windows】Windows APIの便利なリスト

ctypesが使える様になってAPIを調べる機会が増加。 よいサイトを見つけたのでメモ。https://msdn.microsoft.com/ja-jp/windows/hh240557#10使い方は # user32.dllの場合,keybd_eventの場合 ctypes.windll.user32.keybd_event(**,0,0,0) # kernel.dllの場合 c…

【Python】Win32APIとctypesを使ってウィンドウを表示

WindowsのWin32apiをctypesで呼び出してウィンドウを表示する方法 [code language="python"] import cytpes ctypes.windll.user32.MessageBoxW(0, "Text", "Title", 0x00000040) [/code] 4番目の引数はメッセージボックスの形式と動作を指定 MSDNでは定数が…