Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获得对另一个程序对话框的引用,以便单击按钮_C#_.net_Automation - Fatal编程技术网

C# 如何获得对另一个程序对话框的引用,以便单击按钮

C# 如何获得对另一个程序对话框的引用,以便单击按钮,c#,.net,automation,C#,.net,Automation,我成功地获得了对.net中正在运行的应用程序的引用,并且能够使用该引用来单击按钮 这是获取引用并使用它的代码 string name = WindowsIdentity.GetCurrent().Name.Split('\\')[1]; testAssembly = Assembly.LoadFrom(FindFile("BuildWellnessFile.exe", "C:\\Users\\" + name + "\\AppData\\Local\\Apps\\2.0\\")); Type t

我成功地获得了对.net中正在运行的应用程序的引用,并且能够使用该引用来单击按钮

这是获取引用并使用它的代码

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

请不要提及自动化另一个应用程序的最佳实践,我只是被要求完成一些事情

更新: 下面是其他应用程序调用对话框的方式

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

您可能需要使用p/Invoke将BM_单击消息发送到对话框中的相应按钮。在C#中如何执行此操作的一些示例位于

,您可能需要使用p/Invoke将BM#U单击消息发送到对话框中的相应按钮。如何在C#is at

中实现这一点的一些示例是模态的吗?您可以只模拟空格键按下事件。它将运行的计算机不能保证对话框的焦点。我需要弄清楚如何获取对对话框的引用。因此,您对使用Windows UI自动化不感兴趣,这是以编程方式与其他应用程序交互的正常方式(主要用于辅助功能支持)?它是模态的吗?您可以只模拟空格键按下事件。它将运行的计算机不能保证对话框的焦点。我需要弄清楚如何获取对对话框的引用。因此,您对使用Windows UI自动化不感兴趣,这是以编程方式与其他应用程序交互的正常方式(主要用于辅助功能支持)?