Главная страница
    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.46 MB
Время: 0.005 c
14-45154
Alik$
2003-07-30 21:22
2003.08.14
Где найти компоненты помогите ?


14-44999
Карелин Артем
2003-07-29 13:45
2003.08.14
В небольшую фирму требуется админ.


14-45002
Dimka Maslov
2003-07-29 12:23
2003.08.14
Хочется знать


14-45061
Sour
2003-07-27 01:01
2003.08.14
Определение IP адреса машины


14-45023
Evg12
2003-07-29 00:06
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский