9

ポップアップウィンドウからテキストを読み込もうとしています。

エラー

タイトルはいつも同じ。以下のコードでhwndの特定とタイトルの取得はできたのですが、中身の読み方がわかりません。

import time

import win32gui, win32con


windows = []
def _MyCallback( hwnd, extra ):
  extra.append(hwnd)
win32gui.EnumWindows(_MyCallback, windows)

while True:
  window = win32gui.GetForegroundWindow()
  title = win32gui.GetWindowText(window)
  if title == 'Errors occurred':  print 'error window'
  time.sleep(1)

作業バージョンは次のとおりです。

import time

import win32gui

while True:
  window = win32gui.GetForegroundWindow()
  title = win32gui.GetWindowText(window)
  if title == 'Errors occurred':
    control = win32gui.FindWindowEx(window, 0, "static", None)
    print 'text: ', win32gui.GetWindowText(control)
  time.sleep(1)
4

2 に答える 2

5

このテキストは、ウィンドウ コントロールに含まれている場合にのみ、プログラムで読み取ることができます。これは Spy++ で簡単に確認できます。多くの GUI フレームワークは、子コントロールにウィンドウ コントロールを使用しないか、一部の子コントロールにのみウィンドウ コントロールを使用します。

ウィンドウ コントロールの場合はGetWindow()、子構造体を呼び出してウォークすることで識別できます (明らかに、同等の win32gui を使用する必要があります)。

于 2011-05-02T21:22:14.487 に答える
4

使用しているフレームワークやエラーダイアログにアクセスできないので、一般的にはあなたが望むものしか言えません。

FindWindowEx関数が必要であり、それを使用して、クラス名が「静的」であるコントロール(またはコントロールのクラス名が何であれ)を検索します。私はこれが線になると想像します:

control = win32gui.FindWindowEx(window, 0, "Static", 0)

これにより、ハンドルがコントロールに返され、その上でGetWindowTextを使用してテキストを取得できます。

于 2011-05-02T21:12:47.150 に答える