function EnumWindowsProc(hwnd: HWND; lParam: LPARAM): BOOL; stdcall;
begin
  TForm1(lParam).Memo1.Lines.Add(IntToStr(hwnd));
  Result := True;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Clear;
  EnumWindows(@EnumWindowsProc, LPARAM(Self))
end;

解决方案 »

  1.   

    包错[Error] Unit1.pas(36): Variable required
      

  2.   

    function EnumWindowsProc(hwnd: HWND; lParam: LPARAM): BOOL; stdcall;
    var
      Buffer: array[0..255] of Char;
    begin
      if IsWindowVisible(hwnd) then begin
        GetClassName(hwnd, Buffer, 255); //如果不合适,你就自己判断Buffer中是啥
        TForm1(lParam).Memo1.Lines.Add(IntToHex(hwnd, 6) + ':' + Buffer);
      end;
      Result := True;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      Memo1.Clear;
      EnumWindows(@EnumWindowsProc, LPARAM(Self))
    end;
      

  3.   

    那我怎么知道,所有的窗口已经给出了呢,他好像是一直给,
    如果有5个我怎么知道有5个窗口,然后返回false让windows停止给出呢
    窗口的聚丙呢