HWND

解决方案 »

  1.   

    type
       TArrayOfInt = Array of Integer;
      PArrayOfInt = ^TArrayOfInt;function GetAllRunningWindows(WndParent: HWND = 0): TArrayOfInt;
      function EnumWindowsCode(Wnd: HWnd; AddrOfArray: Integer): Boolean; stdcall;
      var
        Len: Integer;
      begin
        Len := Length(PArrayOfInt(AddrOfArray)^);
        SetLength(PArrayOfInt(AddrOfArray)^, Len+1);
        PArrayOfInt(AddrOfArray)^[Len] := Wnd;
        Result := True;
      end;
    begin
      SetLength(Result , 0);
      if WndParent = 0 then
        EnumWindows(@EnumWindowsCode, Integer(@Result))
      else EnumChildWindows(WndParent, @EnumWindowsCode, Integer(@Result));
    end;演示:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      A: TArrayOfInt;
      I: integer;
    begin
      A := GetAllRunningWindows(0);
      for I := Low(A) to high(A) do
        Memo1.Lines.Add(IntToStr(A[I]))
    end;————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————