TerminateProcess( HANDLEp, Ex); // завершить процесс — КиберПедия 

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

TerminateProcess( HANDLEp, Ex); // завершить процесс

2017-11-18 280
TerminateProcess( HANDLEp, Ex); // завершить процесс 0.00 из 5.00 0 оценок
Заказать работу

FormCreate(Form1);

FormCreate(Form1);

end;

procedure TForm1.BPriorityProcessClick(Sender: TObject);

Var

handlep: Thandle;

Begin

handlep:= OpenProcess(PROCESS_ALL_ACCESS, false, StrToInt(SGProcess.Cells[2, RowProcess]));

if RBRealtime.Checked then SetPriorityClass(handlep, REALTIME_PRIORITY_CLASS);

if RBHigh.Checked then SetPriorityClass(handlep, HIGH_PRIORITY_CLASS);

if RBNormal.Checked then SetPriorityClass(handlep, NORMAL_PRIORITY_CLASS);

if RBIdle.Checked then SetPriorityClass(handlep, IDLE_PRIORITY_CLASS);

FormCreate(Form1);

end;

procedure TForm1.BStartThreadClick(Sender: TObject);

Var

i, j: Integer;

Begin

SGThread.RowCount:= sizeStartThread + 1;

for i:= 1 to sizeStartThread do

Begin

for j:= 1 to 3 do

SGThread.Cells[j, i]:= startThread[j, i];

SGThread.Cells[0, i]:= IntToStr(i);

end;

end;

procedure TForm1.BStartWindowClick(Sender: TObject);

Var

i, j: Integer;

Begin

SGWindow.RowCount:= sizeStartWindow + 1;

for i:= 1 to sizeStartWindow do

Begin

for j:= 1 to 9 do

SGWindow.Cells[j, i]:= startWindow[j, i];

SGWindow.Cells[0, i]:= IntToStr(i);

end;

end;

procedure TForm1.BWindowBlockClick(Sender: TObject);

Var

handlep: Thandle;

Begin

if RowWindow > 0 then

Begin

handlep:= StrToInt(SGWindow.Cells[1, RowWindow]);

if RBWindowBlock.Checked then EnableWindow(handlep, false);

if RBNoWindowBlock.Checked then EnableWindow(handlep, true);

end;

end;

procedure TForm1.FormCreate(Sender: TObject);

Var

Num, i, j: Integer;

SH: Cardinal;

PPE: TProcessEntry32;

Full_Path, Exe_name: array [0..255]of string;

ProcessID: array [0..255] of integer;

ProcessParentID: array [0..255] of integer;

ProcessPri: array [0..255] of integer;

PTE: TThreadEntry32;

ThreadProcessID: array [0..2000] of integer;

ThreadID: array [0..2000] of integer;

ThreadPri: array [0..2000] of integer;

DT_hWnd, next_hWnd, buflen: longint;

buf:array [0..Max_Char] of Char;

count: word;

Rect: TRect;

prId,thid: dword;

Begin

// получение информации о первоп процессе

Num:= 0;

SH:= CreateToolHelp32SnapShot(Th32cs_SnapAll, 0);

PPE.dwSize:= sizeof(ProcessEntry32);

Process32First(SH, PPE);

Full_Path[Num]:= PPE.szExeFile;

Exe_Name[Num]:= ExtractFileName(Full_Path[Num]);

ProcessParentID[Num]:= PPE.th32ParentProcessID;

ProcessID[Num]:= PPE.Th32ProcessID;

Num:= Num + 1;

// получение информации о других процессах

While Process32Next(SH, PPE) do

Begin

Full_Path[Num]:= PPE.szExeFile;

Exe_Name[Num]:= ExtractFileName(Full_Path[Num]);

ProcessID[Num]:= PPE.Th32ProcessID;

ProcessPri[Num]:= PPE.pcPriClassBase;

ProcessParentID[Num]:= PPE.th32ParentProcessID;

Num:= Num + 1;

end;

//вывод полученной информации о процессах в таблицу на форме

LProcess.Caption:= 'Список процессов';

SGProcess.Cells[0, 0]:= '№';

SGProcess.Cells[1, 0]:= 'Имя процесса';

SGProcess.Cells[2, 0]:= 'Идентификатор';

SGProcess.Cells[3, 0]:= 'Приоритет';

SGProcess.Cells[4, 0]:= 'Дескриптор';

SGProcess.Cells[5, 0]:= 'Родит. процесс';

SGProcess.RowCount:= Num + 1;

i:= 1;

while i <= Num + 1 do

Begin

SGProcess.Cells[0, i]:= IntToStr(i);

SGProcess.Cells[1, i]:= Exe_Name[i - 1];

SGProcess.Cells[2, i]:= IntToStr(ProcessID[i - 1]);

SGProcess.Cells[3, i]:= IntToStr(ProcessPri[i - 1]);

SGProcess.Cells[4, i]:= IntToStr(OpenProcess(PROCESS_ALL_ACCESS, false, ProcessID[i - 1]));

SGProcess.Cells[5, i]:= IntToStr(ProcessParentID[i - 1]);

i:= i + 1;

end;

// получение информации о первом потоке

Num:= 0;

PTE.dwSize:= sizeof(TThreadEntry32);

Thread32First(SH, PTE);

ThreadProcessID[Num]:= PTE.th32OwnerProcessID;

ThreadID[Num]:= PTE.th32ThreadID;

ThreadPri[Num]:= PTE.tpBasePri;

Num:= Num + 1;

// получение информации о других потоках

While Thread32Next(SH, PTE) do

Begin

ThreadProcessID[Num]:= PTE.th32OwnerProcessID;

ThreadID[Num]:= PTE.th32ThreadID;

ThreadPri[Num]:= PTE.tpBasePri;

Num:= Num + 1;

end;

//вывод полученной информации о потоках в таблицу на форме

LThread.Caption:= 'Список потоков (для получения полного списка нпжмите Ok):';

SGThread.Cells[0, 0]:= '№';

SGThread.Cells[1, 0]:= 'Родит. процесс';

SGThread.Cells[2, 0]:= 'Идентификатор';

SGThread.Cells[3, 0]:= 'Приоритет';

SGThread.RowCount:= Num + 1;

i:= 1;

while i <= Num + 1 do

Begin

SGThread.Cells[0, i]:= IntToStr(i);

SGThread.Cells[1, i]:= IntToStr(ThreadProcessID[i - 1]);

SGThread.Cells[2, i]:= IntToStr(ThreadID[i - 1]);

SGThread.Cells[3, i]:= IntToStr(ThreadPri[i - 1]);

//сохраним эту таблицу в массив

for j:= 1 to 3 do

startThread[j, i]:= SGThread.Cells[j, i];

sizeStartThread:= SGThread.RowCount - 1;

i:= i + 1;

end;

//Список окон

LWindow.Caption:= 'Список окон (для получения полного списка нпжмите Ok):';

DT_hWnd:= GetDesktopWindow; // получить дескриптор окна рабочего стола

next_hWnd:= GetWindow(DT_hWnd, GW_CHILD);

count:= 0;

SGWindow.RowCount:= 2;

SGWindow.Cells[0, 0]:= '№';

SGWindow.Cells[1, 0]:= 'Дескриптор';

SGWindow.Cells[2, 0]:= 'Заголовок';

SGWindow.Cells[3, 0]:= 'Лево';

SGWindow.Cells[4, 0]:= 'Верх';

SGWindow.Cells[5, 0]:= 'Право';

SGWindow.Cells[6, 0]:= 'Низ';

SGWindow.Cells[7, 0]:= 'Род. процесс';

SGWindow.Cells[8, 0]:= 'Род. поток';

SGWindow.Cells[9, 0]:= 'Видимость';

while next_HWnd <> 0 do

Begin

buflen:= GetWindowText(next_HWnd, @buf, MaX_CHAR);

if buflen > 0 then

Begin

SGWindow.Cells[0, count + 1]:= IntToStr(count + 1);

SGWindow.Cells[1, count + 1]:= Format('%10d', [next_hWnd]);

SGWindow.Cells[2, count + 1]:= Format('%s', [String(buf)]);

GetWindowRect(next_Hwnd,Rect);

thId:= GetWindowThreadProcessId(next_Hwnd,@Prid);

SGWindow.Cells[3, count + 1]:= IntToStr(Rect.Left);

SGWindow.Cells[4, count + 1]:= IntToStr(Rect.Top);

SGWindow.Cells[5, count + 1]:= IntToStr(Rect.Right);

SGWindow.Cells[6, count + 1]:= IntToStr(Rect.Bottom);

SGWindow.Cells[7, count + 1]:= IntToStr(Prid);

SGWindow.Cells[8, count + 1]:= IntToStr(thid);

if IsWindowVisible(next_hWnd) then

SGWindow.Cells[9, count + 1]:= 'true'

Else

SGWindow.Cells[9, count + 1]:= 'false';

for j:= 1 to 9 do

startWindow[j, count + 1]:= SGWindow.Cells[j, count + 1];

sizeStartWindow:= SGWindow.RowCount;

inc(count);

SGWindow.RowCount:= count + 1;

end;

next_hWnd:= GetWindow (next_hWnd, GW_HWNDNEXT);

end;

//дочерние окна

LChildWindow.Caption:= 'Список дочерних окон';

SGChildWindow.Cells[0, 0]:= '№';

SGChildWindow.Cells[1, 0]:= 'Дескриптор';

SGChildWindow.Cells[2, 0]:= 'Заголовок';

SGChildWindow.Cells[3, 0]:= 'Лево';

SGChildWindow.Cells[4, 0]:= 'Верх';

SGChildWindow.Cells[5, 0]:= 'Право';

SGChildWindow.Cells[6, 0]:= 'Низ';

SGChildWindow.Cells[7, 0]:= 'Род. процесс';

SGChildWindow.Cells[8, 0]:= 'Род. поток';

SGChildWindow.Cells[9, 0]:= 'Видимость';

//потоки, принадлежащие некому процессу

SGThread.Cells[0, 0]:= '№';

SGThread.Cells[1, 0]:= 'Родит. процесс';

SGThread.Cells[2, 0]:= 'Идентификатор';

SGThread.Cells[3, 0]:= 'Приоритет';

//Уничтожение процесса

LExitProcess.Caption:= 'Введите ID или оставьте поле пустым и выберите процесс из списка:';

EExitProcess.Text:= '';

//Изменение приоритета процесса

LPriorityProcess.Caption:= 'Изменение приоритета процесса:';

RBRealtime.Caption:= 'Наивысший';

RBHigh.Caption:= 'Высокий';

RBNormal.Caption:= 'Нормальный';

RBIdle.Caption:= 'Низкий';

//Блокировка окон

LWindowBlock.Caption:= 'Блокировка окон:';

RBWindowBlock.Caption:= 'Блокировать';

RBNoWindowBlock.Caption:= 'Разблокировать';

//Модули процесса

LModule.Caption:= 'Модули процесса';

Mmodule.Lines.Clear;

CloseHandle(SH);

end;

procedure TForm1.SGProcessMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

Var

count, n, i: Integer;

SH: Cardinal;

PME: TModuleEntry32;

Begin

{вывод потоков}

SGProcess.MouseToCell(X, Y, ColProcess, RowProcess);

//очистка рабочей области таблицы

for count:= 1 to SGThread.RowCount - 1 do

SGThread.Rows[count].Clear;

SGThread.RowCount:= 2;

//если не строка с заголовками столбцов, то:

if RowProcess > 0 then

Begin

n:= 1;

for count:= 1 to sizeStartThread do

if SGProcess.Cells[2, RowProcess] = startThread[1, count] then

Begin

SGThread.Cells[0, n]:= IntToStr(n);

for i:= 1 to 3 do

SGThread.Cells[i, n]:= startThread[i, count];

Inc(n);

SGThread.RowCount:= n + 1;

end;

SGThread.RowCount:= n;

end;

{вывод окон}

//очистка рабочей области таблицы

for count:= 1 to SGWindow.RowCount - 1 do

SGWindow.Rows[count].Clear;

SGWindow.RowCount:= 2;

//если не строка с заголовками столбцов, то:

if RowProcess > 0 then

Begin

n:= 1;

for count:= 1 to sizeStartWindow do

if SGProcess.Cells[2, RowProcess] = startThread[1, count] then

Begin

SGWindow.Cells[0, n]:= IntToStr(n);

for i:= 1 to 9 do

SGWindow.Cells[i, n]:= startWindow[i, count];

Inc(n);

SGWindow.RowCount:= n + 1;

end;

SGWindow.RowCount:= n;

end;

//получение списка модулей

if RowProcess > 0 then

Begin

Mmodule.Lines.Clear;

i:= 1;

SH:= CreateToolHelp32SnapShot(TH32CS_SnapMODULE, StrToInt(SGProcess.Cells[2, RowProcess]));

PME.dwSize:= sizeof(ModuleEntry32);


Поделиться с друзьями:

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.074 с.