2011-03-08 98 views
0

我已经2天了.NET C#编码器试图获得控制ProjectA - WinFormProjectB - C#控制台应用程序。是否有可能从另一个C#控制台应用程序控制WinForm?

基本上我使用WatiN在ProjectA中的WebBrowser控件内自动测试。

当我运行ProjectB执行winformWithWebBrowserTest.exe时,带有webbrowser的winform出现了。但后来无法访问form1。我如何从ProjectB访问webbrowser控件?

错误:

System.Runtime.IteropServices.InvalidComObjectException 
COM 
object that has been separated from its underlying RCW cannot be used 

项目A的WinForm:(winformWithWebBrowserTest.exe)

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : System.Windows.Forms.Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 
    }//end class 

}//end namespace 

项目B控制台应用程序:(WatinConsoleExample.cs)

namespace ConsoleApplication1 
{ 
    class WatinConsoleExample 
    { 
     [STAThread] 
     static void Main(string[] args) 
     { 
      //run ProjectA exe 
      System.Diagnostics.Process Proc = new System.Diagnostics.Process(); 
      Proc.StartInfo.FileName = "C:\\Users\\m-takayashiki\\Documents\\Visual Studio 2010\\Projects\\winformWithWebBrowserTest\\winformWithWebBrowserTest\\bin\\Release\\winformWithWebBrowserTest.exe"; 
      Proc.Start(); 


      WindowsFormsApplication1.Form1 form1 = new Form1(); 

      var t = new Thread(() => 
      { 
       Settings.AutoStartDialogWatcher = false; 
       //exception occurs below .......... 
       var ie = new IE(form1.webBrowser1.ActiveXInstance); 
       ie.GoTo("http://www.google.com"); 
       ie.TextField(Find.ByClass("lst")).TypeText("this is awesome!!"); 
       ie.Button(Find.ByName("btnG")).Click(); 
      }); 
      t.SetApartmentState(ApartmentState.STA); 
      t.Start(); 

     } 
    } 
} 
+0

是否有一个特殊的原因,您不只是直接在浏览器中运行网站,并使用众多浏览器自动化工具之一来驱动它,如watin或selenium? – 2011-03-08 17:10:59

+0

我的项目是使用Selenium在.NET中启用对webbrowser的自动化,但似乎WatiN是要走的路。 – 2011-03-09 00:41:30

回答

1

你不能这样做,因为这两个进程都在其独立的进程空间&中运行,所以你需要重新进行进程间通信,这是不推荐2天的:)。

+0

是否有替代品,以便我可以运行.exe(由C#构建)弹出winform并有我的单独的C#代码来运行WatiN反对它? – 2011-03-08 08:38:24

+0

可能有一些选择,但我不知道任何这样的,对你的道歉。 – 2011-03-08 08:42:03

+0

嗯窗口处理程序呢?也许这会工作..但我必须测试。 – 2011-03-08 09:32:12

相关问题