自己写的程序如何抓取另一个正在运行的应用程序里的某个标题?(50分)

  • 主题发起人 主题发起人 xwings
  • 开始时间 开始时间
X

xwings

Unregistered / Unconfirmed
GUEST, unregistred user!
我想编写一个程序,实现如下功能:

在某个程序A运行时,随时可以获取他的一个panel里的caption.读取到一个string变量里.
现已知这个程序A的标题,和这个程序里的要获取的那个panel的handel .

请问如何抓取呢?

请赐教.....
 
GetWindowText
 
var
buffer: Array[0..255] of Char
SendMessage(Handle,WM_GETTEXT, Integer(@buffer[0]),255);
 
thx

我试试.
 
好像不行啊,,得到的是W 或 Y 之类的字符.

请具体指点一下.

另外我用HandleSpy发现,那个软件的panel的handle每次都是不同的.怎么办?
 
当然不同。
FindWindow找到父窗体
FindWindowEx找子窗体
 
procedure TForm1.Button1Click(Sender: TObject);
var
aWnd,aSubWnd:HWND;
aStr:String;
begin
SetLength(aStr,255);
ListBox1.Clear;
aWnd:=FindWindow('TWINDOWSCMD',nil);
ListBox1.Items.Add(IntToStr(aWnd));
aSubWnd:=FindWindowEx(aWnd,0,'TMyPanel',nil);
ListBox1.Items.Add(IntToStr(aSubWnd));
aSubWnd:=FindWindowEx(aSubWnd,0,'TMyPanel',nil);
ListBox1.Items.Add(IntToStr(aSubWnd));
GetWindowText(aSubWnd,@aStr[1],255);
ListBox1.Items.Add(aStr);
SetWindowText(aSubWnd,'test by ww');
end;

end.
 
接受答案了.
 
后退
顶部