If Module32First(sh, pme) then
begin
MModule.Lines.Add(PME.szModule);
while Module32Next(SH, PME) do
begin
MModule.Lines.Add(PME.szModule);
i := i + 1;
end;
end
else i := 0;
MModule.Lines.Add('Всего модулей: ' + IntToStr(i));
CloseHandle(SH);
end;
end;
procedure TForm1.SGWindowMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
count : Integer;
Chi_hWnd, buflen : longint;
buf : array [0..Max_Char] of Char;
Rect : TRect;
prId,thid : dword;
begin
SGWindow.MouseToCell(X, Y, ColWindow, RowWindow);
//очистка рабочей области таблицы
for count := 1 to SGChildWindow.RowCount - 1 do
SGChildWindow.Rows[count].Clear;
//если не строка с заголовками столбцов, то:
if RowWindow > 0 then
begin
//получить список дочерних окон
Chi_hWnd := GetWindow(StrToInt(SGWindow.Cells[1, RowWindow]), GW_CHILD);
count := 0;
SGChildWindow.RowCount := 2;
while Chi_HWnd <> 0 do
begin
buflen := GetWindowText(Chi_HWnd, @buf, MaX_CHAR);
if buflen > 0 then
begin
SGChildWindow.Cells[0, count + 1] := IntToStr(count + 1);
SGChildWindow.Cells[1, count + 1] := Format('%10d', [Chi_hWnd]);
SGChildWindow.Cells[2, count + 1] := Format('%s', [String(buf)]);
GetWindowRect(Chi_HWnd,Rect);
thId := GetWindowThreadProcessId(Chi_Hwnd,@Prid);
SGChildWindow.Cells[3, count + 1] := IntToStr(Rect.Left);
SGChildWindow.Cells[4, count + 1] := IntToStr(Rect.Top);
SGChildWindow.Cells[5, count + 1] := IntToStr(Rect.Right);
SGChildWindow.Cells[6, count + 1] := IntToStr(Rect.Bottom);
SGChildWindow.Cells[7, count + 1] := IntToStr(Prid);
SGChildWindow.Cells[8, count + 1] := IntToStr(thid);
If IsWindowVisible(Chi_hWnd) then
SGChildWindow.Cells[9, count + 1] := 'true'
else
SGChildWindow.Cells[9, count + 1] := 'false';
Inc(count);
SGChildWindow.RowCount := count + 1;
end;
Chi_hWnd := GetWindow (Chi_hWnd, GW_HWNDNEXT);
end;
end;
end;
end.
Результат работы программы:
Рис. 1 Результат работы программы.
Мордовский государственный университет имени Н.П.Огарёва
Специальность: АСОИиУ
Лабораторная работа
по операционным системам
Получение информации о процессах и потоках
ЛР – 02069964 – ОС – 04 – 12
лабораторная работа № 4
ВЫПОЛНИЛ: ПРОВЕРИЛ:
студенты 241 группы: ____________ 03.04.2012
____________03.04.2012
Алексаев А.Ф. Савкина А.В.
Самылкин А.Д.
Саранск 2012