请问如何知道mouse点击了一个按钮?? (50分)

  • 主题发起人 主题发起人 ajim
  • 开始时间 开始时间
A

ajim

Unregistered / Unconfirmed
GUEST, unregistred user!
我已经找到程序的id,但是如何继续找edit的id呢.如果一个程序有许多edit 和botton我如何把他们全部找到?请给出代码好吗

谢谢高手
 
for i:=0 to form1.controlcount-1 do
begin
if form1.controls.classname=tEdit then
.....
if form1.controls.classname=tButton then
.....

end;

 
我是要找其他程序的edit不是自己的
 
用回调函数,查找到一个窗口,再遍历他的子窗口,找到类是EDIT TEDIT ****含EDIT的类的
窗体应该都是,不过不保证对所有的窗体都对
 
procedure TForm1.Button1Click(Sender: TObject);
var
h:Thandle;
begin
h:=FindWindow(nil,'信使服务 '); //比如说你打开了信使服务 ,找到句柄
h:=FindWindowEx(h,0,'button','确定'); //找到确定按钮的句柄
PostMessage(h,BM_Click,0,0); //向其发送Click消息
PostMessage(h,BM_Click,0,0); //经验正可行
//只是示例具体情况各有不同
end;
没有标题栏就找classname
 
不是模拟按键发送 是检测按键行为
 
用EnumWindows和EnumChildWindows查询吧。先找到类名相同的,在发送消息,得到他的
名称不就可以知道按了哪个吗?
 
那如何知道他按下按钮了呢?
 
var handle1,handle2:thandle;
str,str1:array [0..225] of char;
begin
handle1:=findwindow('Shell_TrayWnd',nil);//已知一个窗口的Handle,拿Shell_TrayWnd来说.
ListBox1.Items.Clear ;
handle2 :=0;
if handle1<>0 then
handle2:=GetWindow(handle1,GW_CHILD);
if handle2<>0 then
begin
getwindowtext(handle2,str,225);
getclassname(handle2,str1,225);
ListBox1.Items .Add(inttostr(handle2)+' 标题:'+str+' 类名:'+str1);
while handle2<>0 do
begin
handle2:=GetWindow(handle2,GW_HWNDNEXT);
if handle2<>0 then
begin
getwindowtext(handle2,str,225);
getclassname(handle2,str1,225);
ListBox1.Items.Add(inttostr(handle2)+' 标题:'+str+' 类名:'+str1);
if str1='Button' then
EnableWindow(handle2,True);
if str1='Edit' then
EnableWindow(handle2,True);
end;
end;
end;
end;
 
EnableWindow是什么意思??
 
接受答案了.
 

Similar threads

回复
0
查看
795
不得闲
S
回复
0
查看
804
SUNSTONE的Delphi笔记
S
S
回复
0
查看
693
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部