Вниз
Скачать: CL | DM;

Убийство процессов   Найти похожие ветки 

← →
DelphiNew ©   (2003-08-04 10:49) [0]

Люди поможите чем сможете!!! Не могу понять почему не убивается процесс, хотя при компиляции ошибок не выдаёт??

procedure TForm1.KillProgram(ClassName: PChar; WindowTitle: PChar);
const
PROCESS_TERMINATE = $0001;
var
ProcessHandle : THandle;
ProcessID: Integer;
TheWindow : HWND;
begin
TheWindow := FindWindow(Classname, WindowTitle);
GetWindowThreadProcessID(TheWindow, @ProcessID);
ProcessHandle := OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);
TerminateProcess(ProcessHandle,4);
end;

procedure TForm1.BtnKillPrcClick(Sender: TObject);
begin
killprogram(nil,pchar(listbox1.Items.Strings[listbox1.ItemIndex]));
sleep(100);
BtnPrcClick(form1);
end;


← →
N169   (2003-08-04 10:50) [1]

Может, правов нет


← →
DelphiNew ©   (2003-08-04 10:53) [2]

В смысле... Поподробнее пожалуйста


← →
Игорь Шевченко ©   (2003-08-04 10:56) [3]

Где, БЛИН, проверки значений, возвращенных функциями ? !!!


← →
DelphiNew ©   (2003-08-04 11:01) [4]

2N169
Если имеется ввиду система то я нахожусь на правах администратора


← →
DelphiNew ©   (2003-08-04 11:02) [5]

2Игорь Шевченко
Как это осуществить???


← →
Игорь Шевченко ©   (2003-08-04 11:05) [6]


> Как это осуществить???


if ... then ... :)))


← →
DelphiNew ©   (2003-08-04 11:27) [7]

Насколько я понял нужно проверить не возвращает ли функция пустое значение??? Но как это влияет на работоспасобности процедуры??? Ведь если возвращается пустое значение то просто выдаётся ошибка List index out of bounds???


← →
DelphiNew ©   (2003-08-04 11:37) [8]

А возможно ли такое что эта функция просто не работает под NT???


← →
N169   (2003-08-04 11:37) [9]

А может GetLastError() ?


← →
DelphiNew ©   (2003-08-04 11:43) [10]

А что эта функция мне даст?? насколько я понимаю ею мы получаем код сообщения Windows


← →
N169   (2003-08-04 11:48) [11]

Ох... Наверно, ничего не даст...



← →
VMcL ©   (2003-08-04 12:19) [12]

>DelphiNew © (04.08.03 10:49)

CloseHandle ?


← →
DelphiNew ©   (2003-08-04 12:48) [13]

Попробую....


← →
Spy   (2003-08-04 14:50) [14]

Конечно у тебя нет прав так просто закрыть посторонний процесс...
По дефолту ты даже тачку через ExitWindowsEx незашатданишь
Ты должен через AdjustTokenPriveleges дать себе право закрывать другие процессы
а ваще MSDN почитай - там все подробно описано


← →
Ancara   (2003-08-04 15:41) [15]

Spy, ты че парню лапшу на уши вешаешь - ExitWindowsEx-совсем другое дело, а если так:

var
ProcessID : integer;
hProcess : THandle;
begin
hProcess:=OpenProcess(PROCESS_ALL_ACCESS, true, ProcID);
TerminateProcess(hProcess, 0);
CloseHandle(hProcess);
end;

то это работает под любой виндой.
DelphiNew: как видишь, разница только в одном:
PROCESS_ALL_ACCESS.
У меня убивает все что можно,т.е. кроме служб и намертво повисших процессов (када винда пишет "идет типа отладка")


← →
Ancara   (2003-08-04 16:02) [16]

Да, и еще, DelphiNew, я так понимаю ты составляешь список из окон в ListBox, а потом по выделенному заголовку окна определяешь какой процесс?
А если строить список сразу из процессов?
Например так:

var
hSnap : THandle;
lppe : tagPROCESSENTRY32;
begin
hSnap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if Process32First(hSnap, lppe) then
begin
ListView1.Items.Clear;
ListView1.Items.Add;
ListView1.Items.Item[0].Caption:=lppe.szExeFile;
ListView1.Items.Item[0].SubItems.Add(IntToHex(lppe.th32ProcessID, 8));
ListView1.Items.Item[0].SubItems.Add(IntToHex(lppe.th32ParentProcessID, 8));
ListView1.Items.Item[0].SubItems.Add(IntToStr(lppe.cntThreads));
ListView1.Items.Item[0].SubItems.Add(IntToStr(lppe.pcPriClassBase));
end;
while Process32Next(hSnap, lppe) do
begin
ListView1.Items.Add;
ListView1.Items.Item[lsvProcess.Items.Count-1].Caption:=lppe.szExeFile;
ListView1.Items.Item[lsvProcess.Items.Count-1].SubItems.Add(IntToHex(lppe.th32ProcessID, 8));
ListView1.Items.Item[lsvProcess.Items.Count-1].SubItems.Add(IntToHex(lppe.th32ParentProcessID, 8));
ListView1.Items.Item[lsvProcess.Items.Count-1].SubItems.Add(IntToStr(lppe.cntThreads));
( IntToStr(lppe.pcPriClassBase)
Да, и еще, DelphiNew, я так понимаю ты составляешь список из окон в ListBox, а потом по выделенному заголовку окна определяешь какой процесс?
А если строить список сразу из процессов?
Например так:

var
hSnap : THandle;
lppe : tagPROCESSENTRY32;
begin
hSnap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if Process32First(hSnap, lppe) then
begin
ListView1.Items.Clear;
ListView1.Items.Add;
ListView1.Items.Item[0].Caption:=lppe.szExeFile;
ListView1.Items.Item[0].SubItems.Add(IntToHex(lppe.th32ProcessID, 8));
ListView1.Items.Item[0].SubItems.Add(IntToHex(lppe.th32ParentProcessID, 8));
ListView1.Items.Item[0].SubItems.Add(IntToStr(lppe.cntThreads));
ListView1.Items.Item[0].SubItems.Add(IntToStr(lppe.pcPriClassBase));
end;
while Process32Next(hSnap, lppe) do
begin
ListView1.Items.Add;
ListView1.Items.Item[lsvProcess.Items.Count-1].Caption:=lppe.szExeFile;
ListView1.Items.Item[lsvProcess.Items.Count-1].SubItems.Add(IntToHex(lppe.th32ProcessID, 8));
ListView1.Items.Item[lsvProcess.Items.Count-1].SubItems.Add(IntToHex(lppe.th32ParentProcessID, 8));
ListView1.Items.Item[lsvProcess.Items.Count-1].SubItems.Add(IntToStr(lppe.cntThreads));
ListView1.Items.Item[lsvProcess.Items.Count-1].SubItems.Add(IntToStr(lppe.pcPriClassBase));
end;
CloseHandle(hSnap);

end;

При условии, что на форме стоит ListView1 (ViewStyle: vsReport) с такими колонками:
Name
ProcessID
ParentProcessID
Threads
Base Priority


← →
Ancara   (2003-08-04 16:03) [17]

Ooops, sorry!
Прошу lsvProcess читать как ListView1.
Забыл поменять...


← →
Spy   (2003-08-04 16:07) [18]

Удалено модератором
Примечание: Личная переписка


← →
Ancara   (2003-08-04 16:15) [19]

Удалено модератором
Примечание: Личная переписка


← →
Ancara   (2003-08-04 16:17) [20]

Удалено модератором
Примечание: Личная переписка


← →
Ancara   (2003-08-04 16:24) [21]

Положил на http://ancara.narod.ru


← →
DelphiNew ©   (2003-08-05 10:50) [22]

Люди спасибо всем за помощь теперь всё работает!!!!!!



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

Скачать: CL | DM;



Память: 0.5 MB
Время: 0.015 c
14-27712
Knight
2003-09-17 21:02
2003.10.09
Каким способом прикидывается сколько народу в данный момент на с


1-27463
evgeniy33
2003-09-26 10:43
2003.10.09
Удаление каталога


3-27393
T2
2003-09-17 20:03
2003.10.09
Удаление записей через AdoTable1


7-27759
Buffoon
2003-07-24 00:04
2003.10.09
Синий экран в windows XP


7-27756
Olgerd
2003-07-20 22:16
2003.10.09
Загрузка процессора




   Наверх