2011-03-08 3 views
0

저는 2 일 전입니다. .NET C# 코더에서 제어를 시도합니다. ProjectA - WinFormProjectB - C# console app.다른 C# 콘솔 앱에서 WinForm을 제어 할 수 있습니까?

기본적으로 ProjectA의 WebBrowser 컨트롤 내에서 테스트를 자동화하기 위해 WatiN을 사용하고 있습니다.

winformWithWebBrowserTest.exe를 실행하는 ProjectB를 실행할 때 webbrowser가있는 winform이 나타납니다. 그러나 form1에 액세스하지 못합니다. 어떻게 ProjectB에서 웹 브라우저 컨트롤에 액세스 할 수 있습니까 ???

오류 :

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

PROJECTA의 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 또는 Serenium과 같은 특정 요소를 사용하는 특별한 이유가 있습니까? –

+0

내 프로젝트는 Selenium을 사용하여. NET에서 웹 브라우저에 대한 자동화를 가능하게하는 것이지만 WatiN이가는 길 같습니다. –

답변

1

두 프로세스가 별도의 프로세스 공간에서 실행 중이기 때문에 & 프로세스 간 통신을 수행해야합니다.이 프로세스는 2 일 동안 권장되지 않습니다 :).

+0

나는 winform을 팝업하고 그것에 대해 WatiN을 실행하는 별도의 C# 코드가있는 .exe (C#에서 빌드 됨)를 실행할 수있는 대안이 있습니까 ??? –

+0

몇 가지 대안이있을 수 있지만, 나는 그러한 사과에 대해 잘 모르고 있습니다. –

+0

흠 창 핸들러는 어떻습니까? 어쩌면 저것은 일할텐데. 나는 시험해야한다. –

관련 문제