怎样才能知道一个label的内容(100分)

  • 主题发起人 主题发起人 sy0116
  • 开始时间 开始时间
S

sy0116

Unregistered / Unconfirmed
GUEST, unregistred user!
假设某个窗体上的一个label的内容是asdfghjkl怎样才能让我的程序上的label1的内容和他一样,我已经知道了这个label的句柄
 
SetText?
不知道行不行
 
同一个程序吗?
 
他说的应该不是同一个程序
 
用GetWindowText这个API试试
 
有没有实例
 
有个实例是获取edit的text 文本的。不知道能不能用来获取label的caption

新建一Form,放置Label、Edit、Button各一个到Form中,将Edit1的PasswordChar属性改为“*”,双击Button1:
  procedure TForm1.Button1Click(Sender: TObject);
  var
  Name:PChar; // 名字
  L:integer; // 名字的长度
  begin
  L:=GetWindowTextLength(Edit1.handle)+1; // 得到名字长度,并将长度加1
  GetMem(Name,L);//为将要得到的名字分配内存
  GetWindowText(Edit1.handle,Name,L);//得到名字
  label1.Caption:=String(Name); // 将得到的名字显示于 Label1
  FreeMem(Name,0); // 释放分配的内存
  end;
  经过运行,在Edit1中输入的密码就可通过Label1显示出来。
 
label1.Caption
 
呵呵,知道句柄了这个就简单了!
var buf:array [0..1023]of char;
H:THandle;//
begin
FillChar(Buf,1024,0);
H:=//你所知道的句柄
SendMessage(H,WM_GETTEXT,1024,Integer(@Buf[0]));
ShowMessage(buf);
end;
 
>> 我已经知道了这个label的句柄
首先要搞清楚,Delphi中的TLabel是没有Handle的,也就没办法获取它的Caption,VC中的Static或Delphi中的TStaticText才有Handle,才能获取Caption,方法用楼上 桦树皮 所说的就可以了
 
H是那个LABEL的句柄
var
buffer: PChar;
L: integer;
begin
L := GetWindowTextLength(H);
GetMem(buffer, L + 1);
SendMessage(H, WM_GETTEXT, L, integer(buffer));
edit1.Text := string(buffer);
FreeMem(buffer);
end;

 
label没有句柄 是画上去的
 
接受答案了.
 
后退
顶部