2017-09-03 6 views
1

それは簡単な作業だと思っていましたが、それはそれとはかけ離れていることが判明しました。 Spy ++はコントロールIDを生成しません(メインウィンドウのみ表示)。各コントロールには名前があります。例(Button - > "AddButton") SendMessageなどの呼び出されたメソッドを使用しようとしましたが、メインウィンドウハンドルが正常に取得されますが、コントロールハンドルを取得しようとすると常に0が返されます。他のアプリケーションからWPFボタンをクリック

私はUIオートメーションライブラリについて聞いたことがありますが、私の特定のタスクの使い方の明確な例は見つかりませんでした。

私の目標:(このようなデータグリッドセルのテキストなど)のデータを取得し、リモートで別のアプリケーションから、WPFアプリケーションのボタンをクリックすることができること(私はC#を使用することがあります)事前に

ありがとう!

編集:私はRanorexスパイを試してみましたが、うまくコントロールをクリックすることができたました: Press button from Ranorex

私はそれをシミュレートできますか?

EDIT 2: 私はうまくいけば、それは他の人々を助ける、さらにいくつかのドキュメンテーションを読んだ後にそれを行うために管理:

  string mainTitle = ""; 
     string controlName = ""; 

     AutomationElement prog = AutomationElement.RootElement.FindFirst(TreeScope.Children, 
      new PropertyCondition(AutomationElement.NameProperty, mainTitle)); 
     AutomationElement btn = prog.FindFirst(TreeScope.Descendants, 
      new PropertyCondition(AutomationElement.AutomationIdProperty, controlName)); 
     InvokePattern clickBtn = (InvokePattern) btn.GetCurrentPattern(InvokePattern.Pattern); 

     clickBtn.Invoke(); 
+0

どのアプリケーションからデータを取得しますか? –

+0

WPFアプリケーションのほんの一部ですが、特定のアプリケーション名を指定する必要がありますか? – TricksterJoe

+0

あなたの投稿はあまり意味がありませんか?なぜ2つのwpfアプリケーションがあり、なぜそれらの間でデータとイベントを共有したいのですか? –

答えて

0

あなたが実際に(ちょっと)のこの種を行うように設計されたUIオートメーションを使用することができますもの。 TestStack.Whiteと呼ばれる、すでにあなたのために働くNuGet-Packageもあります。もともと、自動化されたUIテストのために設計されていましたが、そのようなことをするためになぜそれを使用できなかったのかわかりません。パッケージhere、およびUIオートメーションhereの詳細については、こちらをご覧ください。

+0

確かに、今私は取得する方法を見つけようとしていますデータグリッドの行セル – TricksterJoe

関連する問題