Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.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#控制台应用程序控制WinForm?_C#_.net_Winforms_Webbrowser Control_Watin - Fatal编程技术网

是否可以从另一个c#控制台应用程序控制WinForm?

是否可以从另一个c#控制台应用程序控制WinForm?,c#,.net,winforms,webbrowser-control,watin,C#,.net,Winforms,Webbrowser Control,Watin,我是2天大的.NET C#编码器,试图从ProjectB-C#控制台应用程序控制ProjectA-WinForm。 基本上,我使用WatiN在ProjectA中的WebBrowser控件中自动化测试 当我运行执行winformWithWebBrowserTest.exe的ProjectB时,会显示WinFormWithWebBrowser。但随后它无法访问form1。如何从ProjectB访问webbrowser控件 错误: System.Runtime.IteropServices.Inval

我是2天大的.NET C#编码器,试图从ProjectB-C#控制台应用程序控制ProjectA-WinForm

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

当我运行执行winformWithWebBrowserTest.exe的ProjectB时,会显示WinFormWithWebBrowser。但随后它无法访问form1。如何从ProjectB访问webbrowser控件

错误:

System.Runtime.IteropServices.InvalidComObjectException
COM
object that has been separated from its underlying RCW cannot be used
项目A WinForm:(winformWithWebBrowserTest.exe)

Project B控制台应用程序:(watincooleexample.cs)


您不能这样做,因为两个进程都在各自独立的进程空间中运行&您需要检查进程间通信,这对于2天以前的进程是不推荐的:)。

是否有其他方法可以让我运行.exe(从c#构建)哪一个弹出winform并有我单独的c#代码来运行WatiN来对抗它???可能有一些替代方案,但我不知道有这样的情况,向你道歉。嗯,窗口处理程序呢?也许那样行。。但我必须进行测试。Visual Studio使用了一种机制,当您调试程序时,它会以编程方式创建一个进程,并将您的应用程序加载到同一进程空间中的该进程中,从而为您提供调试功能,我认为您应该对此进行一些研究。您不直接在浏览器中运行网站,并使用众多浏览器自动化工具中的一种来驱动它,比如watin或selenium,这有什么特别的原因吗?我的项目是使用selenium在.NET中对webbrowser启用自动化,但watin似乎是一条出路。
namespace WindowsFormsApplication1
{
    public partial class Form1 : System.Windows.Forms.Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    }//end class

}//end namespace
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();

        }
    }
}