4

Pythonを使用して別のプログラムからテキストラベルを読みたい。WM_GETTEXTを使用する必要があると思いますが、方法がわからず、インターネット上で何も見つかりませんでした。プログラムはアクティブウィンドウを取得しますが、テキストラベルを読み取りません。だから誰かが私を助けてくれることを願っています。

編集:バッファとSendMessageパートを追加しました。たとえば、エディタからテキストを取得できますが、テキストラベルを取得しようとしているプログラムからは取得できません。

私はここでstackoverflow(ポップアップウィンドウからテキストを取得)で見つけた次のコードを持っています:

import win32gui
import time

while True:
    window = win32gui.GetForegroundWindow()
    title = win32gui.GetWindowText(window)
    if 'GLS Exportdatei' in title:
        control = win32gui.FindWindowEx(window, 0, 'static', None)
        buffer = win32gui.PyMakeBuffer(20)
        length = win32gui.SendMessage(control, win32con.WM_GETTEXT, 20, buffer)

        result = buffer[:length]
        print result
        time.sleep(1)
4

2 に答える 2

5

ウィンドウのテキストが20文字を超える場合は、作成したバッファが小さすぎます。必要と思われる以上に拡張してみてください。

buffer = win32gui.PyMakeBuffer(255)
length = win32gui.SendMessage(control, win32con.WM_GETTEXT, 255, buffer)

メインウィンドウ内のコントロールにアクセスする場合は、EnumChildWindowsを使用して、親ウィンドウのハンドルを渡します。これを再帰的に行う必要があるかもしれません。

于 2013-01-24T14:41:19.633 に答える