Мне 2 дня. NET C # кодер пытается получить контроль над ProjectA - WinForm из ProjectB - консольное приложение C #.
В основном я использую WatiN для автоматизации тестирования в элементе управления WebBrowser в ProjectA.
Когда я запускаю ProjectB, который выполняет winformWithWebBrowserTest.exe, появляется winform с webbrowser. Но тогда он не может получить доступ к 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
Консольное приложение Project 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();
}
}
}