
23.05.2017, 20:30
|
Прохожий
|
|
Регистрация: 22.05.2017
Сообщения: 4
Версия Delphi: Delphi7,DelphXE
Репутация: 10
|
|
вот полный код
Код:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,WndInfo;
type
TForm1 = class(TForm)
lbWindows: TListBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
function AddWindow(AHandle : THandle; ListBox : LPARAM) : BOOL; stdcall;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
function TForm1.AddWindow(AHandle: THandle; ListBox: LPARAM): BOOL;
var
FWndInfo : TWndInfo;
AText : String;
PText : Array [0..1023] Of Char;
begin
If (AHandle <> Application.Handle) And (AHandle <> Application.MainForm.Handle) And
(IsWindowVisible(AHandle)) And (GetWindow(AHandle, GW_OWNER) = 0) And (IsWindow(AHandle))
Then
Begin
FillChar(PText,Length(PText) * SizeOf(Char),#0);
GetWindowText(AHandle,@PText,1023);
AText := StrPas(PText);
If (AText <> '') And (AText <> 'Program Manager') Then
Begin
FWndInfo := TWndInfo.Create(AHandle,AText);
TListBox(ListBox).Items.AddObject(AText,FWndInfo);
End;
End;
Result := TRUE;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
I : Integer;
begin
lbWindows.Items.BeginUpdate;
Try
//Clear
For I := 0 To lbWindows.Items.Count-1 Do lbWindows.Items.Objects[i].Free;
lbWindows.Items.Clear;
// Get new list
EnumWindows(@AddWindow,LPARAM(lbWindows));
If lbWindows.Items.Count > 0 Then lbWindows.ItemIndex := 0;
lbWindows.Sorted := FPreferences.SortOrder = soAlpha;
Finally
lbWindows.Items.EndUpdate;
End;
end;
end.
к сожалению компилятор на другом компе поэтому точную ошибку сказать не могу
|