Как получить URL вкладок Internet Explorer с PID каждой вкладки? - PullRequest
6 голосов
/ 09 декабря 2011

У меня есть приложение, которое запускает веб-браузер с определенным URL.После завершения моей программы я хочу закрыть открытые мной веб-страницы / вкладки ..

Вызовом файла EXE с параметрами a.Название процесса б.Строка присутствует в URL

Подробная проблема Как убить дочерний процесс / вкладку Firefox из Java / C ++

Я использовал подход C # ...

Я могу найти идентификатор процесса на всех вкладках.

foreach (Process theprocess in processlist) {
    if (theprocess.ProcessName == "iexplore") {
        Console.WriteLine("Process: {0}\tID: {1}\tWindow name: {2}",
            theprocess.ProcessName, theprocess.Id, theprocess.MainWindowTitle
        );
    }
}

В настоящее время я могу получить только заголовок окна процесса .... и в IE8 виден только один заголовок окна основного процесса..

При условии, что у меня есть pids каждой вкладки, Как найти URL вкладки ... и убить только эту вкладку ??

Я получил эту справку от Доступ запрещен - при попытке получить URL (текст) из дескриптора адресной строки

с помощью SHDocVw;,.

foreach (InternetExplorer ieInst в новом ShellWindowsClass ()) Console.WriteLine (ieInst.LocationURL);

Ответы [ 2 ]

10 голосов
/ 11 января 2012

В IE7 и более поздних версиях приведенный ниже код уничтожит только вкладку с соответствующей строкой в ​​своем URL.

   foreach (SHDocVw.InternetExplorer ieInst in new SHDocVw.ShellWindows())
   {
        String url = ieInst.LocationURL;
        if (url.Contains("google"))
        {
            ieInst.Quit();
        }
   }

Чтобы выделить конкретную вкладку, код:

   foreach (SHDocVw.InternetExplorer ieInst in new SHDocVw.ShellWindows())
   {
        String url = ieInst.LocationURL;
        if (url.Contains("google"))
        {
            int val = ieInst.HWND;
            IntPtr hwnd = new IntPtr(val);
            ShowWindow(hwnd, SW_MAXIMISE);
            SetForegroundWindow(hwnd);
        }
   }
3 голосов
/ 13 декабря 2011

Есть способ получить URL каждого экземпляра IExplorer !!

Добавить ссылку " Microsoft Internet Controls " в проект.

Кусок кодаis

**foreach (SHDocVw.InternetExplorer ieInst in new SHDocVw.ShellWindowsClass())
        {
            System.Console.WriteLine(ieInst.LocationURL);
        }**

Генерация exe и Interop.SHDocVw.dll

Это будет работать ... :)

...