2011-08-05 12 views
1

実行中のアプリケーションへの参照を取得して成功しました。その参照をクリックするために使用できましたボタン。ボタンをクリックできるように別のプログラムのダイアログボックスへの参照を取得するにはどうすればいいですか

これは参照を取得して使用するコードです。

string name = WindowsIdentity.GetCurrent().Name.Split('\\')[1]; 
testAssembly = Assembly.LoadFrom(FindFile("BuildWellnessFile.exe", "C:\\Users\\" + name + "\\AppData\\Local\\Apps\\2.0\\")); 
Type t = testAssembly.GetType("BuildWellnessFile.Form1"); 
testForm = (Form)testAssembly.CreateInstance(t.FullName); 
ThreadPool.QueueUserWorkItem(new WaitCallback(RunApp), testForm); 

object[] p = { this, new EventArgs() }; 
InvokeMethod(testForm, "CountButton_Click", p); 

これは、コード

Assembly testAssembly = null; 
Form testForm = null; 

static void RunApp(object state) 
{ 
Application.Run((Form)state); 
} 

private void InvokeMethod(Form form, string methodName, params object[] parms) 
{ 
EventHandler eh = (EventHandler)Delegate.CreateDelegate(typeof(EventHandler),form,methodName); 
    if (eh != null) 
    { 
    form.Invoke(eh, parms); 
    } 
} 

を支援しているは、invokeMethodが他のアプリケーションでボタンをクリックするのに使用され、この後、ダイアログボックスがポップアップ表示されます。私はOKを押すことができるように、そのダイアログボックスへの参照を取得したいと思います。

別のアプリケーションの自動化に関するベストプラクティスについては言及しないでください。

UPDATE:ここ は、他のアプリケーションは、あなたはおそらくダイアログボックスで適切なボタンにBM_CLICKメッセージを送信するためにP /呼び出しを使用する必要があります

Interaction.MsgBox(" active cards in list created at: ", MsgBoxStyle.OkOnly, Nothing) 
+0

です。これはモーダルですか?スペースバーのプッシュダウンイベントをエミュレートできます。 – agibalov

+0

実行されるコンピュータは、ダイアログボックスのフォーカスを保証しません。私はダイアログへの参照を取得する方法を理解する必要があります。 – Paul

+1

他のアプリケーション(主にアクセシビリティサポートのために使用される)とプログラムでやり取りする通常の方法であるWindow UI Automationを使用することに興味はありませんか? –

答えて