我試圖連接到已打開的Internet Explorer窗口。一旦連接,我需要發送一些擊鍵(通過SendKeys)到IE窗口進行一些處理。我有下面的代碼,直到SendKeys命令。它找到名爲「圖形數據庫」的IE窗口。當它擊中「SendKeys.Send(」{TAB}「);」我得到錯誤「一個未處理的類型'System.NullReferenceException'發生的異常」。C#IE11自動化 - 無法連接到打開IE窗口
附加信息:我還收到以下NullReferenceException錯誤。奇怪的是,如果我編碼打開一個新的IE窗口,然後使用SendKeys它工作正常。連接到現有的Windows似乎會導致此問題。
由於應用程序未處理Windows消息,因此SendKeys無法在此應用程序中運行。請將應用程序更改爲處理消息,或使用SendKeys.SendWait方法。
任何人都可以請幫我弄清楚該怎麼做才能解決這個問題?
安迪
InternetExplorer IE = null;
// Get all browser objects
ShellWindows allBrowsers = new ShellWindows();
if (allBrowsers.Count == 0)
{
throw new Exception("Cannot find IE");
}
// Attach to IE program process
foreach (InternetExplorer browser in allBrowsers)
{
if (browser.LocationName == "Graphics Database")
{
MessageBox.Show ("Found IE browser '" + browser.LocationName + "'");
IE = (InternetExplorer)browser;
}
}
IE.Visible = true;
System.Threading.Thread.Sleep(2000);
SendKeys.Send("{TAB}");
SendKeys.Send("G1007");
SendKeys.Send("{ENTER}");
堆棧跟蹤或.... – hoodaticus
我發現更多的問題是** IE.Visible = true; **不起作用。如果我在IE.Visible = true之前和之後用MessageBox暫停代碼並手動單擊圖形數據庫窗口使其處於活動狀態並在前面,則以下代碼將按預期工作。 – Andy
我能解決這個問題。我永遠無法獲得IE.Visible = true的工作。這在我的代碼中似乎沒有任何意義。我不得不使用SetForegroundWindow()將焦點設置到IE窗口。 – Andy