Перечислить формы и дочерние формыDelphi , Программа и Интерфейс , ФормыПеречислить формы и дочерние формы
Оформил: DeeCo type PWindows = ^TWindows; TWindows = record WindowHandle: HWND; WindowText: string; end; type TForm1 = class(TForm) Button1: TButton; TreeView1: TTreeView; procedure Button1Click(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; PNode, CNode: TTreeNode; AWindows: PWindows; implementation {$R *.DFM} function EnumChildWindowsProc(Wnd: HWnd; Form: TForm1): Bool; export; {$ifdef Win32} stdcall; {$endif} var Buffer: array[0..99] of Char; begin GetWindowText(Wnd, Buffer, 100); //if StrLen(Buffer) 0 then if StrPas(Buffer) = '' then Buffer := 'Empty'; new(AWindows); with AWindows^ do begin WindowHandle := Wnd; WindowText := StrPas(Buffer); end; CNode := Form1.TreeView1.Items.AddChildObject(PNode, AWindows^.WindowText + ':' + IntToHex(AWindows^.WindowHandle, 8), AWindows); if GetWindow(Wnd, GW_CHILD) 0 then begin PNode := CNode; Enumchildwindows(Wnd, @EnumChildWindowsProc, 0); end; Result := True; end; function EnumWindowsProc(Wnd: HWnd; Form: TForm1): Bool; export; {$ifdef Win32} stdcall; {$endif} var Buffer: array[0..99] of Char; begin GetWindowText(Wnd, Buffer, 100); //if StrLen(Buffer) 0 then if StrPas(Buffer) = '' then Buffer := 'Empty'; new(AWindows); with AWindows^ do begin WindowHandle := Wnd; WindowText := StrPas(Buffer); end; PNode := Form1.TreeView1.Items.AddObject(nil, AWindows^.WindowText + ':' + IntToHex(AWindows^.WindowHandle, 8), AWindows); EnumChildWindows(Wnd, @EnumChildWindowsProc, 0); Result := True; end; procedure TForm1.Button1Click(Sender: TObject); begin EnumWindows(@EnumWindowsProc, Longint(Self)); end; procedure TForm1.FormDestroy(Sender: TObject); begin Dispose(AWindows); end; end. {**********************************************} { Other Code by NicoDE {**********************************************} type PMyEnumParam = ^TMyEnumParam; TMyEnumParam = record Nodes: TTreeNodes; Current: TTreeNode; end; function EnumWindowsProc(Wnd: HWND; Param: PMyEnumParam): BOOL; stdcall; const MyMaxName = 64; MyMaxText = 64; var ParamChild: TMyEnumParam; ClassName: string; WindowText: string; begin Result := True; SetLength(ClassName, MyMaxName); SetLength(ClassName, GetClassName(Wnd, PChar(ClassName), MyMaxName)); SetLength(WindowText, MyMaxText); SetLength(WindowText, SendMessage(Wnd, WM_GETTEXT, MyMaxText, lParam(PChar(WindowText)))); ParamChild.Nodes := Param.Nodes; ParamChild.Current := Param.Nodes.AddChildObject(Param.Current, '[' + ClassName + '] "' + WindowText + '"' + ' Handle: ' + IntToStr(Wnd), Pointer(Wnd)); EnumChildWindows(Wnd, @EnumWindowsProc, lParam(@ParamChild)); end; procedure TForm1.Button1Click(Sender: TObject); var Param: TMyEnumParam; begin Param.Nodes := TreeView1.Items; Param.Current := TreeView1.TopItem; TreeView1.Items.BeginUpdate; EnumWindows(@EnumWindowsProc, lParam(@Param)); TreeView1.Items.EndUpdate; end; Формы:
Дочерние формы: Нет дочерних форм в данном коде. Однако, кажется, что код предназначен для использования с контролем TreeView для отображения информации о окнах на системе. Замечания:
В статье описываются формы и дочерние формы в Delphi с использованием компонента TreeView для отображения иерархии окон. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |