2012-04-14 9 views
0

他のアプリケーションからWindowsアプリケーションのボタンをクリックしようとしています。基本的には、アプリAのコードからアプリBのボタンをクリックしたいと考えています。アプリケーションのすべての要素を一覧表示するにはどうすればよいですか?

winapi findWindowを使用してハンドラを取得できます。問題は、アプリケーションBのボタンの名前がわからないということです。アプリケーションのすべての名前またはIDをリストすることは可能ですか?

私はそれを実現するためにC#を使用しています。

+0

@Arion //これまでのところなし。私はGoogleにしようとしたが、何も持っていなかった。私はソースコードを持っていないので、この質問はここには当てはまらないかも知れませんが、私はこの問題にどのように接近するのか分かりません。どんな提案も高く評価されます。 – Moon

答えて

2

あなたは提案を見ているので(これは非常に一般的な質問ですが、他のアプリケーションやウィンドウの種類によっては動作しないかもしれません)、ブラウザやサードパーティ製のアプリケーションなどです)

このような密接に関連した答えを見てください(それは重複しているかもしれませんが、あなたはまだ「探している」のですが、多分注意しています)。

また

Accessing Elements from Other Processes

他のアプリの '入力' か 'アクセス' へのこの1
Pinvoke SetFocus to a particular control

+0

NSGaga //投稿をいただきありがとうございます! – Moon

+0

@Moon np - あなたの最善の策は[UI Automation](http://msdn.microsoft.com/en-us/library/ms747327.aspx)です。またはアクセシビリティ(古いバージョンのもの)でも、何も保証されていません。 – NSGaga

2

私はこれをテストしていません。しかし、それはintresstingライブラリのように見えます。おそらくあなたが使用できる機能がいくつかあります。それはWhiteと呼ばれます。これは単なるサンプルです:

Application application = Application.Launch("foo.exe"); 
Window window = application.GetWindow("bar", InitializeOption.NoCache); 

Button button = window.Get<Button>("save"); 
button.Click(); 
+0

確かに、いくつかのテストを与える必要があります – NSGaga

1

あなたは)そのボタンの名前とクラスを検索し、これらの情報は、FindWindowを(のパラメータとして使用するためにこのようなスパイ++(エクスプレスエディションを除く任意のVisual Studioに含まれている)などのツールを使用することができます。

+0

素晴らしい! Spy ++は非常に便利です – Moon

関連する問題