前回のエントリはこちら:http://d.hatena.ne.jp/deis/20070113/1168644863
組んでみた。公開しない方がよかったと思った。今は反省している。
# -*- coding: shift_jis -*- #import import sys import ctypes import winxpgui user32 = ctypes.windll.user32 def text(hwnd): length = user32.GetWindowTextLengthA(hwnd) if length: buffer = ctypes.create_string_buffer("",length + 1) if user32.GetWindowTextA(hwnd, buffer, length +1): return buffer.value.decode("mbcs") def proc(hwnd, user): if write_file == True: value = hwnd, text(hwnd), winxpgui.GetClassName(hwnd) fo.write(str(value) + "?n") else: print hwnd, text(hwnd) return 1 def run(): WNDENUMPROC = ctypes.WINFUNCTYPE(ctypes.c_int, ctypes.c_void_p, ctypes.c_long) user32.EnumWindows(WNDENUMPROC(proc), 0) return 1 if __name__ == '__main__': if len(sys.argv) == 2: write_file = True fo = file(sys.argv[1]+".txt", "w") run() fo.close() else: write_file = False run()
動作させるとズラズラ表示します。パラメータ渡すとファイルに出力します。ちなみに同名のファイルがあった場合、問答無用で削除します(死)
問題点
- ctypesの使い方がわからない・・・コメントしてもらったものそのままです
- そのせいで、ctypesとwinxpguiが混在しているカオスコードに
- ファイルに保存すると、日本語が化けます
- 色々無駄があるような気がします
ctypesの使い方がほんとにわからない・・・2.5のドキュメント読んだけどよく分からなかったよ(;ω;)