我想把另一个应用程序中PANEL.caption的内容取出来。由于:
1.该窗口中有多个PANEL。
2.CAPTION 中内容在不断变化中,不知如何提取?
 请高手指教。谢谢!

解决方案 »

  1.   

    var 
      sCaption : string ;sCaption := Panel.caption ; 
    似乎caption的值与这个Panel里含多少个panel子控件无关吧?
      

  2.   

    如果是当前窗体1楼的答案就可以了不过变量不必定义成caption类型,string型的就可以了
      

  3.   

    肯定要先获得此应用程序(另外窗口)中PANEL的句柄,关键是标示没有,如何获取?
      

  4.   

    FindWindow + GetWindowText
    先查这函数怎么用的吧
      

  5.   

    是这样:我想把另一个运行中的应用程序中的控件panel的caption内容取出,此内容为不断变化的坐标值。  可得到此应用程序窗口句柄,但无法得到panel句柄。用getdigitem,GetWindow好像都不行!
      

  6.   

    关键就在于如何获得 Panel 的句柄吧。
    那运行这个程序的电脑在你的控制之下面吗?
    如果是,那么可以用
    GetCursorPos 组合 WindowFromPoint 获得改 Panel 的句柄,如果不是那么应该也可以用 GetWindow 和 GetNextWindow 组合来获得句柄的,不过这种方法没试过。
      

  7.   

    function EnumChildWindowsProc(H: HWnd; TF: TForm1): Boolean; stdcall;
    var
      Buffer: array[0..255] of Char;
    begin
      //这里的 H 就是所有子窗体的句柄
      Result := True;
      Form1.ListBox1.Items.Add(IntToStr(H));
    end;
    procedure TForm1.FormShow(Sender: TObject);
    begin
      //这里的 FHandle1 就是“应用程序窗口句柄”
      //下面的函数就是枚举该"应用程序窗口"的所有子窗口的句柄,包括 Panel
      EnumChildWindows(FHandle1, @EnumChildWindowsProc, Longint(Self));
    end;至于要怎样区分那个句柄才是你想要的 Panel 的句柄,那就要看那个 Panel 可以跟其它窗口区分的特征了,
    例如坐标、大小.......
    你可以用 GetWindowRect 函数获得该窗口的坐标、大小等信息