一个应用程序的窗体名为Form2,窗体中有两个Edit,分别为Edit1和Edit2,
我想得到Edit1和Edit2的内容,下面的程序为什么得到的是Edit2的内容?不知道错在哪了,
如果想分别得到Edit1和Edit2的值应该怎么写呢?希望能给出实际的例子,谢谢!procedure TForm1.Timer1Timer(Sender: TObject);
var
HWindow,hedit,hbutton: THandle;
szText: Array[0..255] Of char;
Begin
HWindow := 0;
HWindow := FindWindow('TForm2', nil);
If HWindow <> 0 Then
Begin
hedit:= FindWindowEx(hwindow, 0,'TEdit', nil);
end;
if hedit<>0 then
begin
SendMessage(hEdit, WM_GetTEXT, 256,integer(@szText[0]));
end;
end;
我想得到Edit1和Edit2的内容,下面的程序为什么得到的是Edit2的内容?不知道错在哪了,
如果想分别得到Edit1和Edit2的值应该怎么写呢?希望能给出实际的例子,谢谢!procedure TForm1.Timer1Timer(Sender: TObject);
var
HWindow,hedit,hbutton: THandle;
szText: Array[0..255] Of char;
Begin
HWindow := 0;
HWindow := FindWindow('TForm2', nil);
If HWindow <> 0 Then
Begin
hedit:= FindWindowEx(hwindow, 0,'TEdit', nil);
end;
if hedit<>0 then
begin
SendMessage(hEdit, WM_GetTEXT, 256,integer(@szText[0]));
end;
end;
解决方案 »
- 急!求助,Delphi数据转发服务器设计!在线等待!
- 如何判断当前系统的鼠标设置是正常还是左手习惯?(左右键与正常相反)
- 救急!!!怎样取得Tchecklistbox控件中所选内容?
- 怎样返回一个实数的整数部分(不要奸笑)?
- 使用GetMessage()但不想等待消息到来?
- 请问学delphi应该看什么书啊(新手)
- 请问各位网友,如何将datetimepicker控件中日期值设为空值??
- 我修改了{delphi}\source\vcl\menu.pas,删掉了{delphi}\lib\menu.dcp,不知道怎样重新编译生成
- 怎样制作client/server应用程序?
- 如何象winzip一样可以在文件的右键菜单中显示Add to zip?
- 怎样读TXT文件,每行取一段字符
- 关于image自定义控件
function EnumWindowsProc(H: hWnd): boolean; stdcall;
var
AClass, AText: array[0..255] of char;
begin
Result := True;
FillChar(AClass, 256, 0);
FillChar(AText, 256, 0);
GetClassName(H, AClass, 255);
if StrPas(AClass) = 'TEdit' then
begin
GetWindowText(H, AText, 255);
Showmessage(StrPas(AText));
end;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
EnumChildWindows(Form2.Handle, @EnumWindowsProc, 0);
end;
{再增加一点新功能:}function EnumWindowsProc(H: hWnd): boolean; stdcall;
var
AClass, AText: array[0..255] of char;
R: TRect;
begin
Result := True;
FillChar(AClass, 256, 0);
FillChar(AText, 256, 0);
GetClassName(H, AClass, 255);
if StrPas(AClass) = 'TEdit' then begin
GetWindowText(H, AText, 255);
GetWindowRect(H, R);
Showmessage(Format('Edit句柄:%x;内容:%s;顶点座标:%d,%d',[H, StrPas(AText), R.Left, R.Top]));
end;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
EnumChildWindows(窗体句柄, @EnumWindowsProc, 0);
end;
var
AClass, AText: array[0..255] of char;
begin
Result := True;
FillChar(AClass, 256, 0);
FillChar(AText, 256, 0);
GetClassName(H, AClass, 255);
if StrPas(AClass) = 'TEdit' then
begin
GetWindowText(H, AText, 255);
Showmessage(StrPas(AText));
end;
end;procedure TForm1.Button2Click(Sender: TObject);
var
HWindow:THandle;
begin
HWindow:=0;
HWindow:=findwindow('TForm2',nil);
if HWindow<>0 then
begin
EnumChildWindows(HWindow, @EnumWindowsProc, 0);
end;
end;Edit1和Edit2都有内容,为什么输出的都是空的呢?
如果这样写HWindow:=findwindow(nil,'Form2');
HWindow的结果就是0,form2是运行的,不知道是什么原因?
{喝多了, 我有点晕. 刚才在解决GetWindowText无法返回Text的问题,是这样解决的:}
function EnumWindowsProc(H: hWnd; I: LParam): bool; stdcall;
var
AClass, AText: array[0..255] of char;
R: TRect;
begin FillChar(AClass, 256, 0);
FillChar(AText, 256, 0);
GetClassName(H, AClass, 255);
if StrPas(AClass) = 'TEdit' then begin
//GetWindowText(H, AText, 255);
SendMessage(H, WM_GetText, 255, integer(@AText));
GetWindowRect(H, R);
Showmessage(Format('Edit句柄:%x;内容:%s;顶点座标:%d,%d',[H, StrPas(AText), R.Left, R.Top]));
end;
Result := True;
end;procedure TForm1.Button2Click(Sender: TObject);
var
H:hWnd;
begin
H:= Findwindow(nil, 'Form2');
EnumChildWindows(H, @EnumWindowsProc, 0);
end;
楼主再查一下你测试用的工程里有没有名为Form2, 类名为TForm2的窗体, 也就是说与被测试的窗体同名,同类的