我的这个代码可以获得叫form1的窗体的句柄使它最大化,怎么得到这个窗体上的按钮的句柄,并且模仿按钮点击??(88分)

  • 主题发起人 主题发起人 苦命的人
  • 开始时间 开始时间

苦命的人

Unregistered / Unconfirmed
GUEST, unregistred user!
var
Handle: Integer;
begin

handle := FindWindow(nil,'form1');
SendMessage(handle,WM_SYSCOMMAND,SC_MAXIMIZE,0);

我的这个代码可以获得叫form1的窗体的句柄使它最大化,怎么得到这个窗体上的按钮的句柄,
并且模仿按钮点击??
 
以前写过,给你

function findhnd(handle:thandle;lparam:lparam):boolean;stdcall;
var
l:integer;
name:pchar;
a:string;
buffer:array [0..255] of char;
begin
result:=true;
getclassname(handle,buffer,256);
a:=strpas(buffer);
if StrPas(buffer)='TButton' then //查找对应的类
begin
l:=sendmessage(handle,WM_GETTEXTLENGTH,0,0)+1;
GetMem(Name,L);
SendMessage(handle,WM_GETTEXT,l,integer(Name));
a:=strpas(name);
if strpas(name)='Button2' then //查找对应的名称
begin
pinteger(lparam)^:=handle;
result:=false;
end;
FreeMem(name,0);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
hnd:thandle;
mycom:tmycom;
begin
hnd:=findwindow(nil,'Form2');
if hnd<>0 then
begin
EnumChildWindows(hnd,@findhnd,integer(@hnd));
// try
// mycom:=tmycom.create(hnd,button1);
// finally
// mycom:=nil;
// end;
sendmessage(hnd,WM_LBUTTONDOWN,0,0);
sendmessage(hnd,WM_LBUTTONUP,0,0);
end;

end;
 
mycom:tmycom;
使用它需要什么单元呢?
 
哦,不用那,是我的一个新开的线程,不过你用不着的,把它去掉把,
有些地方,你自己改吧
 
要是按钮的标题不同的话可以这样
var
h,h1: hwnd;
begin
h := findWindow(nil,'form caption');
h1 := FindWindowEx(h,0,nil,'button caption');
sendMessage(handle,WM_LBUTTONDOWN,0,0);
sendMessage(handle,WM_LBUTTONUP,0,0);
end;
 
多人接受答案了。
 
后退
顶部