В вашем решении C #, если вы добавите ссылку на компонент COM с именем «Microsoft Internet Controls», вы сможете получить доступ к пространству имен SHDocVw из консольного приложения C #, не делая ничего необычного.
Как только я это сделал (в VS 2008), я смог использовать SHDocVw.ShellWindows, SHDocVw.IWebBrowser2 и так далее.Например:
SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindowsClass();
foreach (SHDocVw.IWebBrowser2 ie in shellWindows)
{
Console.WriteLine("ie.LocationURL: " + ie.LocationURL);
if (ie.LocationURL.Contains("foo.com"))
ie.Quit();
}
РЕДАКТИРОВАТЬ: При использовании VS 2012 / .NET 4.x вместо этого можно использовать подход, описанный ниже, чтобы обойти ошибку «Невозможно внедрить тип взаимодействия« SHDocVw.ShellWindowsClass »."
using SHDocVw;
// ... snip ...
SHDocVw.ShellWindows shellWindows = new ShellWindows();
foreach (SHDocVw.IWebBrowser2 ie in shellWindows)
{
Console.WriteLine("ie.LocationURL: " + ie.LocationURL);
if (ie.LocationURL.Contains("foo.com"))
ie.Quit();
Подробнее о выпуске VS 2012 см. В следующем ответе:
C # Как получить текущий URL из IE?