|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
![]() |
|
Опции темы | Опции просмотра |
![]() |
#1 (permalink) |
Новичок
Регистрация: 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. |
![]() |
![]() |
![]() |
|
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Не стоит просто сидеть и ждать ответов, лучше изучить аналогичные темы Помогите найти ошибку, Pascal abc Помогите исправить ошибку в программе Помогите найти ошибку Не могу найти ошибку в программе. Паскаль |
![]() |
#2 (permalink) |
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,750
Записей в дневнике: 71
Сказал(а) спасибо: 162
Поблагодарили 200 раз(а) в 84 сообщениях
Репутация: 74843
|
![]()
Не все системные процессы можно программно завершить, особенно если программа запущена без административных привелегий.
__________________
Убить всех человеков! |
![]() |
![]() |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
![]() |
Опции темы | |
Опции просмотра | |
|
|