Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 24.06.2011, 21:34   #1 (permalink)
Randomname
Новичок
 
Регистрация: 17.06.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите найти ошибку в программе

Я дебил и не хрена не могу понять, как завершить случайный процесс, подскажите кто знает, вот программа:
procedure TForm1.FormCreate(Sender: TObject);
var Wnd: HWND;
buff: array [0..255] of char;
nprocess: array [0..255] of string;
kolprocess: integer;
info: textfile;
nowdate, nowtime: TDateTime;
number, i: byte;
begin
repeat
nowdate:=Date;
nowtime:=Time;
Wnd:=GetWindow(Handle, GW_HWNDFIRST);
kolprocess:=0;
while Wnd <> 0 do
begin
if (Wnd <> Application.Handle) and (GetWindowText(Wnd, buff, SizeOf(buff)) <> 0) then
begin
GetWindowText(Wnd, buff, SizeOf(buff));
kolprocess:=kolprocess+1; {Высчитаем кол-во запущенных процессов}
nprocess[kolprocess]:=buff;
end;
Wnd:=GetWindow(Wnd, GW_HWNDNEXT);
end;
until TimeToStr(nowtime)='20:28:00';
randomize;
number:=random(kolprocess+1);
AssignFile(info, 'C:\WINDOWS\PCHEALTH\Протокол.txt');
Rewrite(info);
writeln(info, '--------------------------------------------------------------------------------');
writeln(info, '| ', DateToStr(nowdate), ' | ', TimeToStr(nowtime), ' | ');
writeln(info, '--------------------------------------------------------------------------------');
for i:=1 to kolprocess do
begin
writeln(info, 'Процесс № ', i, ' - ', nprocess[i]);
end;
writeln(info, '--------------------------------------------------------------------------------');
writeln(info, nprocess[number], ' - № ', number, ' - будет завершён');
CloseFile(info);
end;
function ProcessTerminate(dwPID:Cardinal):Boolean;
var hToken:THandle;
SeDebugNameValue:Int64;
tkp:TOKEN_PRIVILEGES;
ReturnLength:Cardinal;
hProcess:THandle;
begin
Result:=false;
if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken ) then exit;
if not LookupPrivilegeValue( nil, 'SeDebugPrivilege', SeDebugNameValue ) then
begin
CloseHandle(hToken);
exit;
end;
tkp.PrivilegeCount:=1;
tkp.Privileges[0].Luid:= SeDebugNameValue;
tkp.Privileges[0].Attributes:= SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,false,tkp,SizeOf(tkp) ,tkp,ReturnLength);
if GetLastError()<> ERROR_SUCCESS then exit;
hprocess:=OpenProcess(PROCESS_TERMINATE, FALSE, dwPID);
if hprocess=0 then exit;
if not TerminateProcess(hprocess, DWORD(-1)) then exit;
CloseHandle(hprocess);
tkp.Privileges[0].Attributes:= 0;
AdjustTokenPrivileges(hToken, FALSE, tkp, SizeOf(tkp), tkp, ReturnLength);
if GetLastError() <> ERROR_SUCCESS then exit;
Result:=true;
end;
end.
Randomname вне форума   Ответить с цитированием

Старый 24.06.2011, 21:34
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Не стоит просто сидеть и ждать ответов, лучше изучить аналогичные темы

Помогите найти ошибку, Pascal abc
Помогите исправить ошибку в программе
Помогите найти ошибку
Не могу найти ошибку в программе. Паскаль

Старый 25.06.2011, 07:12   #2 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Не все системные процессы можно программно завершить, особенно если программа запущена без административных привелегий.
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 15:00.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.