0

c#.NET を使用して Windows フォーム アプリケーションを構築しており、AutoITX3.dll を使用して単純なウィンドウ スクリプトを実行したいと考えています。AutoItX3Lib を適切に参照しました。以下は私のコードです。

プログラムをタブで移動してウィンドウ「タイトル」をアクティブにしますが、プログラムはスクリプトを続行せず、「ITS ACTIVE」行を出力しません。WinWaitActive でスタックしているように見えますが、その理由はわかりません。

autoit = new AutoItX3Lib.AutoItX3Class();                           
autoit.AutoItSetOption("WinTitleMatchMode", 2);   
autoit.WinActivate("Title");
autoit.WinWaitActive("Title");    
System.Console.WriteLine("ITS ACTIVE"); 
4

1 に答える 1

0

WinWaitActive("sometitle")タイトルが表示されない場合はフリーズします。つまり、指定したパラメータで表示されないため、ウィンドウがアクティブになるまで無期限に待機します。


解決策: AutoIt インスペクタを使用してウィンドウのタイトルを取得し、すべてのコードを実際のAutoIt スクリプトに配置します (これにより、ライブラリ自体にエラーが発生する可能性を排除できます)。次に、その AutoIt スクリプトを使用して調整します。

AutoIt のタイトルを一致させるのに問題がある場合があるため、次のようなことができます。

While( True )
     $winTitle = WinGetTitle("[active]")
     $matchText = "Title" ; put the title you want to match here
     $match = WinActive($matchText) ; If this is 0, then it didn't match.
     ConsoleWrite($winTitle & " : " & $match)
WEnd

タイトルの部分文字列も一致させる必要があることに気付きました。そのオプションをそのままにして、正規表現を使用してタイトルを一致させるのが最善であることがわかりました。

タイトルを投稿すると、それに一致する正規表現またはコードを見つけて、それを C# で使用するための完全なコードを提供します。

[注: 投稿したコードは検証していないため、エラーがないことは保証できません。私は Mac を使用していますが、今はテストできません]

幸運を!

于 2012-09-30T11:28:54.127 に答える