0

インストール ウィザードを自動化しようとしていますが、有効になっていないボタンをクリックする必要がありました。

これは Windows Messages を使用して実行できることはわかっていますが、これが White または UIAutomation で既にサポートされているかどうか疑問に思っていました。

参考までに、これは機能しません:

var invoke =  (System.Windows.Automation.InvokePattern)setup.button("Next >").AutomationElement.GetCurrentPattern(System.Windows.Automation.InvokePattern.Pattern);  
invoke.Invoke();

これもしない

var guiAutomation = new API_GuiAutomation("msiexec");  
var setup = guiAutomation.windows()[0]; 
setup .bringToFront(); 
setup .button("Next >").mouse().click();  // this will work
setup .button("Next >").mouse().click();  // this will not work since the button is not enabled

上記の例では、O2 プラットフォームに追加した White ベースの API を使用しています (メモ帳の自動化の例はこちら) 。

4

4 に答える 4

1

UIAutomation でこれを行うことができるとは思いません。あなたが求めているのは、UIAutomation フレームワークの権限を超えたものです。マウスとキーボードを使用する場合と同じようにコードを使用できるようにすることを目的としています。UI の状態を操作する一般的な手段として設計されていません。

于 2011-03-15T14:19:24.813 に答える
0

あなたが言ったように、Windowsメッセージを送信するWin32関数EnableWindowを直接呼び出すことができます。

UIAutomation でその機能を探しましたが、見つかりませんでした。

于 2011-06-14T16:26:14.603 に答える
0

有効化されたボタンをクリックすることは、アプリケーションの通常の実行ではなく、フォールト インジェクション技術に関連しています。このボタンは、アプリケーションの残りのライフ サイクルで無効になりますか、それとも後で有効になりますか? 後者の場合は、有効になるのを待ちませんか? element.Current.IsEnabled または Wait-UIAButton コマンドレットで do/while を使用する。

于 2012-04-19T14:05:59.243 に答える
-1

ホワイトを使用している場合

Mouse.Instance.Location = this.ClickablePoint;

Mouse.LeftDown(); Mouse.Instance.Location = ポイント; Mouse.LeftUp();

于 2011-06-16T02:53:35.943 に答える