如题。

解决方案 »

  1.   

    enumwindows,enumchildwindows,看看API帮助
      

  2.   

    取得窗口中带有句柄的控件
    var
      hMain,hChild:HWND;
      buffer:array[1..200] of char;
    begin
     hMain:=FindWindow(nil,'Form1');
     hChild:=FindWindowEx(hMain,0,nil,nil);
     while hChild>0 do
       begin
         GetWIndowText(hChild,@buffer,200);
         ListBox1.Items.Add(StrPas(@Buffer));
         hChild:=FindWindowEx(hMain,hChild,nil,nil);
       end;
    end;
      

  3.   

    function EnumWindowsProc(hwnd: HWND; lParam: LPARAM): Boolean; stdcall;
    var
      cName: array[0..180] of Char;
      wName: array[0..32] of Char;
      tHandle: Longword;
    begin
      result := true;
      GetClassName(hwnd, cName, 32);    {类名}
      GetWindowText(hwnd, wName, 180);  {窗口名}
      tHandle := GetWindowLong(hwnd, GWL_STYLE); {判断窗体是否可见}
      if (WS_VISIBLE and tHandle) > 1 then
        Form1.Memo1.Lines.Append(IntToStr(hwnd)+ ' | ' + StrPas(cName) + ' | ' + StrPas(wName));
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      EnumWindows(@EnumWindowsProc, 0);
    end;