Получить заголовки и названия классов форм активных процессовDelphi , Программа и Интерфейс , Процессы и СервисыАвтор: Xavier Pacheco { Copyright © 1999 by Delphi 5 Developer's Guide - Xavier Pacheco and Steve Teixeira } unit MainFrm; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls; type { Define a record/class to hold the window name and class name for each window. Instances of this class will get added to ListBox1 } TWindowInfo = class WindowName, // The window name WindowClass: string; // The window's class name end; TMainForm = class(TForm) lbWinInfo: TListBox; btnGetWinInfo: TButton; hdWinInfo: THeaderControl; procedure btnGetWinInfoClick(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure lbWinInfoDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); procedure hdWinInfoSectionResize(HeaderControl: THeaderControl; Section: THeaderSection); end; var MainForm: TMainForm; implementation {$R *.DFM} function EnumWindowsProc(Hw: HWnd; AMainForm: TMainForm): Boolean; stdcall; { This procedure is called by the User32.DLL library as it enumerates through windows active in the system. } var WinName, CName: array[0..144] of char; WindowInfo: TWindowInfo; begin { Return true by default which indicates not to stop enumerating through the windows } Result := True; GetWindowText(Hw, WinName, 144); // Obtain the current window text GetClassName(Hw, CName, 144); // Obtain the class name of the window { Create a TWindowInfo instance and set its fields with the values of the window name and window class name. Then add this object to ListBox1's Objects array. These values will be displayed later by the listbox } WindowInfo := TWindowInfo.Create; with WindowInfo do begin SetLength(WindowName, strlen(WinName)); SetLength(WindowClass, StrLen(CName)); WindowName := StrPas(WinName); WindowClass := StrPas(CName); end; MainForm.lbWinInfo.Items.AddObject('', WindowInfo); // Add to Objects array end; procedure TMainForm.btnGetWinInfoClick(Sender: TObject); begin { Enumerate through all top-level windows being displayed. Pass in the call back function EnumWindowsProc which will be called for each window } EnumWindows(@EnumWindowsProc, 0); end; procedure TMainForm.FormDestroy(Sender: TObject); var i: integer; begin { Free all instances of TWindowInfo } for i := 0 to lbWinInfo.Items.Count - 1 do TWindowInfo(lbWinInfo.Items.Objects[i]).Free end; procedure TMainForm.lbWinInfoDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); begin { First, clear the rectangle to which drawing will be performed } lbWinInfo.Canvas.FillRect(Rect); { Now draw the strings of the TWindowInfo record stored at the Index'th position of the listbox. The sections of HeaderControl1 will give positions to which to draw each string } with TWindowInfo(lbWinInfo.Items.Objects[Index]) do begin DrawText(lbWinInfo.Canvas.Handle, PChar(WindowName), Length(WindowName), Rect, dt_Left or dt_VCenter); { Shift the drawing rectangle over by using the size HeaderControl1's sections to determine where to draw the next string } Rect.Left := Rect.Left + hdWinInfo.Sections[0].Width; DrawText(lbWinInfo.Canvas.Handle, PChar(WindowClass), Length(WindowClass), Rect, dt_Left or dt_VCenter); end; end; procedure TMainForm.hdWinInfoSectionResize(HeaderControl: THeaderControl; Section: THeaderSection); begin lbWinInfo.Invalidate; // Force ListBox1 to redraw itself. end; end. Программа на Delphi, которая перечисляет все верхние окна, отображаемые в данный момент, и отображает их имена и классы в списке. Главная форма имеет список ( Событие отображения списка ( Основные классы и процедуры:
Основные процедуры:
Чтобы получить имена заголовков и классов активных процессов, можно использовать следующий код:
Код открывает handle процесса с помощью Заметьте: вам нужно заменить Получение заголовков и названий классов форм активных процессов с помощью программного кода на языке Delphi. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Процессы и Сервисы ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |