Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
14-45005
PsoFT
2003-07-29 12:26
2003.08.14
Привет !


14-44997
Basja
2003-07-29 10:49
2003.08.14
Опять хабы и т.п.


14-45085
KODer
2003-06-14 15:46
2003.08.14
Дублированные функции???


14-45019
SkyRanger
2003-07-28 04:33
2003.08.14
Информация о компиляторе!


14-44987
ZZ
2003-07-28 20:47
2003.08.14
Подскажите чего бы полезного скачать





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский