• 查找当前所有顶级窗口


    有时常需要查找当前有哪些窗口打开着,所以先用一种方法写下来:

    效果:

    //工程文件
    program Project1;
    
    uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1};
    
    {$R *.res}
    
    begin
      Application.Initialize;
      Application.MainFormOnTaskbar := True;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    end.
    
    // 单元文件
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        ListBox1: TListBox;
        Label1: TLabel;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure ListBox1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
      function EnumWindowsProc(hwnd: HWND; lparam: Integer): Boolean ; stdcall;
    
    var
      Form1: TForm1;
      slist: TStringList;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      ListBox1.Clear;
    end;
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      slist := TStringList.Create;
    end;
    
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
      slist.Free;
    end;
    
    procedure TForm1.ListBox1Click(Sender: TObject);
    begin
      SetWindowText(Handle,ListBox1.Items[ListBox1.ItemIndex]);
    end;
    
    function EnumWindowsProc(hwnd: HWND; lparam: Integer):Boolean;
    var
      buf: array[Byte] of char;
      swnd: string;
    begin
      GetWindowText(hwnd, buf, sizeof(buf)); //取得窗口标题
      swnd := Inttostr(hwnd);
      slist.Add('窗口句柄:'+swnd +'---'+'标题:'+ buf);
      Result := True;    //重要
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      EnumWindows(@EnumWindowsProc, 0);
      ListBox1.Items.Assign(slist);
    end;
    
    end.
    
    //窗体代码
    object Form1: TForm1
      Left = 0
      Top = 0
      BorderIcons = [biSystemMenu, biMinimize]
      Caption = 'Form1'
      ClientHeight = 295
      ClientWidth = 448
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'Tahoma'
      Font.Style = []
      OldCreateOrder = False
      Position = poScreenCenter
      OnCreate = FormCreate
      OnDestroy = FormDestroy
      PixelsPerInch = 96
      TextHeight = 13
      object Label1: TLabel
        Left = 8
        Top = 8
        Width = 121
        Height = 18
        AutoSize = False
        Caption = #24403#21069#30340#39030#23618#31383#21475#26377#65306
      end
      object Button1: TButton
        Left = 352
        Top = 48
        Width = 75
        Height = 41
        Caption = #26597#25214
        TabOrder = 0
        OnClick = Button1Click
      end
      object ListBox1: TListBox
        Left = 8
        Top = 32
        Width = 298
        Height = 257
        ItemHeight = 13
        TabOrder = 1
        OnClick = ListBox1Click
      end
      object Button2: TButton
        Left = 352
        Top = 184
        Width = 75
        Height = 41
        Caption = #28165#31354
        TabOrder = 2
        OnClick = Button2Click
      end
    end
    
  • 相关阅读:
    SVN服务器搭建和配置使用详解
    Oracle命令大全
    mysql史上最全的学习资料
    jquery性能优化的38个建议
    vijosP1037搭建双塔
    vijosP1159 岳麓山上打水
    vijosP1038 添加括号
    BZOJP1003 [ZJOI2006]物流运输trans
    vijosP1006 晴天小猪历险记之Hill
    洛谷1043 数字游戏
  • 原文地址:https://www.cnblogs.com/boltwolf/p/2073881.html
Copyright © 2020-2023  润新知