Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как удалить нужный процесс IE (который браузер) / 7 сообщений из 7, страница 1 из 1
19.05.2013, 09:54
    #38263723
Kreol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить нужный процесс IE (который браузер)
Приветствую!!!
Господа, подскажите.
Запускаю процесс IE
Код: c#
1.
2.
3.
4.
Process internetBrowserProcess = new Process();
           ProcessStartInfo psi = new ProcessStartInfo(@"IExplore.exe");
           internetBrowserProcess.StartInfo = psi;
           internetBrowserProcess.Start();


но проблема в том, что мне нужно каждый час его убивать и перезапускать.
Предполагается использовать:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
string target_name = "iexplorer.exe";
           System.Diagnostics.Process[] local_procs = System.Diagnostics.Process.GetProcesses();
           try
           {
               System.Diagnostics.Process target_proc = local_procs.First(p => p.ProcessName == target_name);
               target_proc.Kill();
           }
           catch (InvalidOperationException)
           {
               MessageBox.Show("Process " + target_name + " not found!");

           }


Проблема в том, что если просто глянуть в процессы, то iexplorer.exe 2 штуки.

Как удалить тот, что браузер:?)
Единственное, по чем можно определить, как я вижу, это размер занимаемой памяти, он будет расти.
Помогите кодом иль советом.
Заранее спасибо.
...
Рейтинг: 0 / 0
19.05.2013, 09:57
    #38263724
Kreol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить нужный процесс IE (который браузер)
...
Рейтинг: 0 / 0
19.05.2013, 10:14
    #38263727
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить нужный процесс IE (который браузер)
Kreol,

они оба "браузеры". В IE 9+ создается по 1 процессу на вкладку.
...
Рейтинг: 0 / 0
19.05.2013, 10:15
    #38263728
Kreol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить нужный процесс IE (который браузер)
о_О только что заметил что имя браузера iexplore.exe а проводника iexplorer.exe)
Теперь осталось удалить процесс(ы) ведь каждая вкладка это отдельный процесс, код выше не находит его(
...
Рейтинг: 0 / 0
19.05.2013, 10:17
    #38263730
Kreol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить нужный процесс IE (который браузер)
а все разобрался, .exe не надо было писать)
...
Рейтинг: 0 / 0
19.05.2013, 11:25
    #38263747
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить нужный процесс IE (который браузер)
Kreolо_О только что заметил что имя браузера iexplore.exe а проводника iexplorer.exe)У проводника — explorer.exe.

А вообще все ie находятся через коллекцию ShellWindows.
...
Рейтинг: 0 / 0
19.05.2013, 14:43
    #38263831
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить нужный процесс IE (который браузер)
Kreol, для запуска процесса без параметров, достаточно одной строки - Process.Start("IExplore.exe"). Класс ProcessStartInfo нужен в ситуации, когда мы указываем доп. параметры. Код в таком случае логичнее написать так:
Код: c#
1.
2.
3.
ProcessStartInfo psi = new ProcessStartInfo(@"IExplore.exe");
//...
Process internetBrowserProcess = Process.Start(psi);



Касательно завершения работы браузера, то лучше использовать более вежливый способ по сравнению с Kill(). Первое что можно попробовать, это вызвать SendMessage(internetBrowserProcess.MainWindowHandle, WM_CLOSE, 0, 0) чтобы дать возможность завершить работу основному процессу и всем дочерним. Если в течение некоторого промежутка, скажем 5 секунд, процесс еще не завершился (WaitForExit(5*1000)), тогда можно принимать грубые меры.

Для этого сначала найдем все дочерние процессы для нашего internetBrowserProcess. Следует исходить из того что дочерние процессы тоже могли что-то запустить и имена подобных процессов могут не быть iexplore.exe (в данный момент такого вроде нет, но кто знает что будет дальше). Для построения дерева процессов можно использовать т.н. Toolhelp API - Win32: How to enumerate child processes? . Затем убиваем по очереди убиваем все процессы.

Также есть вариант с использованием так называемых job объектов . Здесь под job понимается логический контейнер для процессов. Их прелесть для нашей задачи в том, что заверешение job-a автоматически завершит все процессы которые работают внутри него, включая дочерние. В .NET нет родных функций для работы с job-ами. То есть придется писать p/invoke код. Однако это окупится т.к. позволит упростить код. Кроме этого при необходимости на job можно накладывать различные ограничения по использованию процессора, памяти и т.п. вещей.

Kreolтолько что заметил что имя браузера iexplore.exe а проводника iexplorer.exe
Ты хотел сказать explorer.exe и iexplore.exe?
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как удалить нужный процесс IE (который браузер) / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]