Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.09;
Скачать: 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 вся ветка

Текущий архив: 2003.10.09;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.023 c
3-27396
Дмитрий К.
2003-09-18 14:58
2003.10.09
Регистр символов и таблица в памяти


1-27505
Nikulin
2003-09-26 15:47
2003.10.09
Про сервисы...


3-27365
Dark Elf
2003-09-19 13:09
2003.10.09
Документация по ADO SQL


14-27723
Manfred
2003-09-20 19:35
2003.10.09
Редактирование анкеты.


3-27336
Manfred
2003-09-20 19:07
2003.10.09
List index out of bounds.