Форум: "Потрепаться";
Текущий архив: 2003.08.14;
Скачать: [xml.tar.bz2];
ВнизПомогите с ExitProcess Найти похожие ветки
← →
AllDontFire (2003-06-12 10:28) [0]Привет Всем!
Нужен код закрывающий IEXPLORE.exe
По-моему всё работает, кроме ExitProcess:
program Projuk;
uses TlHelp32,windows,SysUtils;
Procedure Exit_IE;
var Hs,lpexit:Cardinal;lppe:tagPROCESSENTRY32;Hand:Thandle;
begin
hS:=CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS,0);
lppe.dwSize:=sizeof(PROCESSENTRY32);
Process32First(hS,lppe);
repeat
if Pos("IEXPLORE",UpperCase(lppe.szExeFile))>0
Then begin
Hand:=OpenProcess(PROCESS_QUERY_INFORMATION,false,lppe.th32ProcessID);
If hand=NULL Then MessageBox(0,"Hand","NULL",0);
if not GetExitCodeProcess(hand,lpExit) Then MessageBox(0,"GetExitCode","Failed",0);;
ExitProcess(lpExit);
CloseHandle(Hand);
end
until not Process32next(hS,lppe);
CloseHandle(hS)
end;
begin
Exit_IE
end.
Подскажите - что не так?
Заранее спасибо.
← →
StAL (2003-06-12 11:18) [1]Функция ExitProcess закрывает процесс, который ее вызвал. Она реализована через ф-цию TerminateProcess примерно так.
TerminateProcess(GetCurrentProcess, uExitCode);
Именно с пом. TerminateProcess можно закрыть чужой процесс, но так делать не рекомендуется. TerminateProcess не очищает никаких ресурсов процесса! Если например процесс работал с разделяемым ресурсом с пом. мьютексом, то возможен такой ход событий.
процесс запретил доступ другим процессам к разделяемому ресурсу
записывает в него какие - то данные
и тут Вы его завершаете с пом. TerminateProcess
Он не успел разрешить запись в ресурс другим процессам, это может привести к зависанию системы.
Никогда не используйте эту функцию кроме тех случаев, когда это действительно необходимо!
Лучше с пом. WinSight определи класс окна IE и вызови
hWnd := FindWindow(<класс IE>, nil);
PostMessage(hWnd, WM_QUIT, 0, 0);
Вот так!
С ув. Алексей
← →
AllDontFire (2003-06-12 11:30) [2]Не работает и так:
program Project1;
uses windows,messages;
var wnd:Hwnd;
begin
wnd:=FindWindow("IEFrame",nil);
PostMessage(wnd,Wm_quit,0,0);
end.
← →
KpeHgeJIb (2003-06-12 11:38) [3]Вместо wm_quit поставь wm_Close и все заработает
← →
AllDontFire (2003-06-12 11:49) [4]Спасибо! заработало:
закрывает все окна ИЕ
program Project1;
uses windows,messages;
var wnd:Hwnd;
begin
wnd:=FindWindow("IEFrame",nil);
while wnd<>0 do begin
PostMessage(wnd,Wm_close,0,0);
( "IEFrame",nil)Спасибо! заработало:
закрывает все окна ИЕ
program Project1;
uses windows,messages;
var wnd:Hwnd;
begin
wnd:=FindWindow("IEFrame",nil);
while wnd<>0 do begin
PostMessage(wnd,Wm_close,0,0);
wnd:=FindWindow("IEFrame",nil)
end
end.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.08.14;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c