Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Топ:
Основы обеспечения единства измерений: Обеспечение единства измерений - деятельность метрологических служб, направленная на достижение...
Выпускная квалификационная работа: Основная часть ВКР, как правило, состоит из двух-трех глав, каждая из которых, в свою очередь...
Интересное:
Распространение рака на другие отдаленные от желудка органы: Характерных симптомов рака желудка не существует. Выраженные симптомы появляются, когда опухоль...
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Дисциплины:
2017-11-18 | 281 |
5.00
из
|
Заказать работу |
|
|
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);
|
|
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!