У меня есть программа, в которой я должен получить экземпляр SHDocVw.InternetExplorer из запущенного процесса IE8. Для получения экземпляра запускается приведенный ниже пример кода. По некоторым причинам это не будет работать без Thread.Sleep.
Browser.HWND создает исключение InvalidCastException для всех экземпляров m_IEFoundBrowsers, если Thread.Sleep удален. При использовании Thread.Sleep он работает для окон IE8.
Кто-нибудь знает, как это сделать, не используя Thread.Sleep? (Мне не нравится использовать функцию сна, обычно она просто выдвигает проблемы в будущее ...)
Пример кода:
InternetExplorer m_IEBrowser = null;
ShellWindows m_IEFoundBrowsers = new ShellWindowsClass();
Thread.Sleep(10);
foreach (InternetExplorer Browser in m_IEFoundBrowsers)
{
try
{
if (Browser.HWND == (int)m_Proc.MainWindowHandle)
{
m_IEBrowser = Browser;
break;
}
}
catch(InvalidCastException ice)
{
//Do nothing. Browser.HWND could not execute for this item.
}
}