簡単な質問では、わかりやすいものが欠けているに違いない。複数の条件がある場合
オープンするウィンドウをポーリングするサブルーチンを作成しようとしていますが、これは2つの条件が満たされている間に実行されるループでこれを達成することを目指しています。 do-while文で
Run time error 13: Type Mismatch
、およびSO上で同様の問題を検索した後、私はまだ私が間違っているの何をかなり確実ではないです:私はエラーを取得しておきます。ここで
が出erroring続け行です:
ループが始まる前にTimer
は、現時点では
Now()
あり、そして
HWNDOut
が中に発見される私が探しています窓、のハンドルです
Sub FindHWND()
Dim HWNDOut as string
Dim Timer as Date
Timer = Now()
'This following line is the one erroring out.
Do While ((Now() < Timer + TimeValue("00:00:10")) And (HWNDOut = 0))
HWNDOut = CStr(Hex(FindWindowEx(0&, 0, "SunAwtFrame", "Graph.graphml - yEd")))
Debug.Print HWNDOut
Sleep (100)
Loop
'Other, following sub and code that is not relevant
End Sub
ループ。
次のサブルーチンでコマンドが失われるのを防ぐために、このループはすべてサードパーティ製プログラムのウィンドウが開いているかどうかを確認するために100 MSごとに表示されます。
投稿スクリプト:誰かがこれをよりうまくやる方法を提案しているなら、私はすべて耳にします。これは初めてのUIオートメーションを使用しているので、まだ学習しています。 編集:コンテキストのブロックにコードを追加しました。
また、「その他、次のサブコードと関連性のないコード」とは、テストしようとしていた部分を処理していないものすべてをコメントアウトしたことを意味します。このループを直接処理するものだけが現在アクティブです。 – JustinCoplin
'FindWindow'と' FindWindowEx'の違いを見てください。あなたは間違ったものを使用しています。 – ACatInLove
@ACatInLove私はそれをまっすぐにすることができますので、FindWindowクラスとウィンドウ名を指定してルートを検索し、その子を一度に1階層ずつ検索してウィンドウを検索します。 FindWindowExはほとんど同じことを行いますが、提供される親ウィンドウから開始し、後で検索を開始する子を決定することによっていくつかのウィンドウを除外することができます。それは正しいのでしょうか? – JustinCoplin