0

以下のタイトル名の読み方はコードです

from pywinauto.application import *
import time
app=Application.Start("apps.exe")
app.window_(title="aps a.b.c.d")
time.sleep(2)

その後、コードは次のようなエラーを出していますwindow is not found

だから、私の質問はaps a.b.c.d、ウィンドウのタイトルに渡す方法です。

4

1 に答える 1

0

pywinauto が非常に微妙なタイミング エラーを引き起こす可能性があることに気付きました。これがあなたの問題であれば、これは悪いことではありません。

プロセスが開始されたからといって、ウィンドウが存在し、完全に形成されているわけではありません。あなたの睡眠は Application.Start() の後である必要があります。しかし、これはずさんな解決策であり、すべてのシステムですべての状況で機能するとは限りません。

len( pwa_app.windows_() ) と pwa_app.top_window_() を使用して、アプリケーションが必要な状態であることを確認しました。

ただし、これには欠点があります。関数へのそれらは、ウィンドウが作成または破棄されているときに例外を引き起こす機能を持っているようです。したがって、プレーンな time.sleep() 呼び出しを使用する代わりに、通常は次のようなものを使用します。

#Do While Loop; continuous retry on exception
condition = True
while condition:
    try:
        window_count = len( app.windows_() )
    except:
        continue

    if window_count == num:
        condition = False
    else:
        time.sleep( WAITTIME )

誰かが私にもっと良い方法を説明してくれたらうれしいです。ドキュメントでこれらの問題についての言及を見つけることができませんでした。これは洗練されておらず、CPU を大量に消費しますが、100% の確率で動作します。

編集

Stack Overflow をブラウジングしているときに、pywinauto が私の例とまったく同じ機能を提供していることがわかりました。

于 2013-11-16T01:37:45.530 に答える