Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.05.29;
Скачать: [xml.tar.bz2];

Вниз

как закрыть процесс   Найти похожие ветки 

 
Azbul   (2003-03-27 09:46) [0]

например IExplore.exe очень надо


 
QUE   (2003-03-27 09:54) [1]

Пошли ему сообщение Что-нибудь типа WM_DESTROY или WM_CLOSE


 
default   (2003-03-29 02:29) [2]

unit Temp;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ShellApi, ExtCtrls, TLHelp32, CheckLst, Buttons;

type
TForm1 = class(TForm)
CheckListBox1: TCheckListBox;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
procedure FormActivate(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
mid: Array of Cardinal;

implementation

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);
var
sh: LongInt;
ps: PROCESSENTRY32;
i: Byte;
begin

i := 0;
SetLength(mid, 0);
CheckListBox1.Clear;
sh := CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
ps.dwSize := SizeOf(ps);
if (sh <> -1) and Process32First(sh, ps) then begin
repeat
SetLength(mid, i + 1);
mid[i] := ps.th32ProcessID;
CheckListBox1.Items.Add(ps.szExeFile);
Inc(i);
until not Process32Next(sh, ps);
CloseHandle(sh);
end;

end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
i: Byte;
begin

for i := 0 to CheckListBox1.Count - 1 do
if CheckListBox1.Checked[i] then
TerminateProcess(OpenProcess(PROCESS_TERMINATE, False, mid[i]), 0);
Sleep(50);
FormActivate(nil)

end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
begin

FormActivate(nil)

end;

end.

скомпиль
там и IE закроет


 
jack128   (2003-03-29 13:38) [3]

нужно ещё закрыть хендл процесса

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
i: Byte;
PH : Thandle;
begin

for i := 0 to CheckListBox1.Count - 1 do
if CheckListBox1.Checked[i] then begin
ph := OpenProcess(PROCESS_TERMINATE, False, mid[i]);
TerminateProcess(ph,0);
CloseHandle(ph);
end;
Sleep(50);
FormActivate(nil)
end;


 
___ALex___   (2003-03-29 19:19) [4]

to jack128 закрываем хендл процесса которого скорее всего нет?
скорее всего потому что после возвращения управления TerminateProcess процесс может быть ещё не завершён
после "смерти" процесса все "следы" оставленные им во время своего существования "заметаются"
то есть строка CloseHandle(ph) не нужна


 
Morfein   (2003-03-29 21:33) [5]

Зачем такие сложности?
Окно эксплоера всегда содержит в заголовке текст "Microsoft Internet Explorer"... используете FindWindow, а результат передаёте в KillWindow();


procedure KillWindow(hWnd : dword);
var
dwProcessId : dword;
begin
dwProcessId:=0;
GetWindowThreadProcessId(hWnd, @dwProcessId);
if dwProcessId > 0 then
TerminateProcess(OpenProcess(PROCESS_ALL_ACCESS, false, dwProcessId), 0);
end;


Причём работать будет и под NT...


 
___ALex___   (2003-03-30 04:05) [6]

да это понятно
ему для общего случая дали


 
jack128   (2003-03-30 14:43) [7]

___ALex___ © (30.03.03 04:05)
Не мешало бы точки и запятые расставить -).


> после "смерти" процесса все "следы" оставленные им во время
> своего существования "заметаются"


Никто ничего не заметает. Пока ты не закроешь хендл процесса, объект ядра "процесс" не будет уничтожен.
Я ж те давал ссылку на Рихтера - там все это описано -)


 
azra3L   (2003-03-30 19:18) [8]

а что если использовать ExitProcess для "чистого" завершения...


 
jack128   (2003-03-30 21:56) [9]

ExitProcess завершает текущий, то есть твой собственный процесс...



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2003.05.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
3-94673
AcidMan
2003-05-10 08:08
2003.05.29
инсталяшка BDE


8-94975
Melnyk
2003-02-13 12:40
2003.05.29
TImage . Смена картинок.


3-94749
Andrio
2003-05-10 14:30
2003.05.29
if-then-else в вычисляемых полях


1-94836
paxer
2003-05-19 19:28
2003.05.29
Параметр, переданный приложению при запуске


1-94861
Ann
2003-05-16 15:31
2003.05.29
TreeView





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский