这个问题了N次了,怎么都没人帮忙回答,是不是CSDN没高手?

vickly 2005-03-24 05:39:19
我可以功能的取得应用程序的窗口句柄,在我的程序里也要求取得其它程序的EDIT控件的句柄,并自动填写。
   希望各位能帮帮我!另外,那个程序里有两个 Edit(类似QQ的登陆对话框)两个Edit用什么区别呢?我用spy++看,类都是Edit,标题为空!

怎么区分两个EDIT的句柄呢?
...全文
302 点赞 收藏 41
写回复
41 条回复
zobo 2005年03月30日
//已知Edit的Parent的句柄(ChildHandle3),获得第一个Edit的句柄
EditHandle1 := FindWindowEx(ChildHandle3,0,'Edit',nil);
SendMessage(EditHandle1,WM_SETTEXT,0, Integer(Str1));
//获得第二个Edit的句柄
EditHandle2 := GetWindow(EditHandle1,GW_HWNDNEXT);
SendMessage(EditHandle2,WM_SETTEXT,0, Integer(Str2));


同意楼上呢~~
回复 点赞
dext 2005年03月25日
是不是CSDN没高手?


==============================


不错
回复 点赞
vickly 2005年03月25日
Point(10, 10))太难找了~~~~怎么找有简单的方法吗?

X,Y是相对于窗体还是相对于显示器?
回复 点赞
d0347 2005年03月25日
如果出两个edit 的 位置,再用 FindWindowFromPoint获取句柄是可以的
回复 点赞
navyfish 2005年03月25日
//已知Edit的Parent的句柄(ChildHandle3),获得第一个Edit的句柄
EditHandle1 := FindWindowEx(ChildHandle3,0,'Edit',nil);
SendMessage(EditHandle1,WM_SETTEXT,0, Integer(Str1));
//获得第二个Edit的句柄
EditHandle2 := GetWindow(EditHandle1,GW_HWNDNEXT);
SendMessage(EditHandle2,WM_SETTEXT,0, Integer(Str2));
回复 点赞
navyfish 2005年03月25日
//已知Edit的Parent的句柄(ChildHandle3),获得第一个Edit的句柄
EditHandle1 := FindWindowEx(ChildHandle3,0,'Edit',nil);
SendMessage(EditHandle1,WM_SETTEXT,0, Integer(Str1));
//获得第二个Edit的句柄
EditHandle2 := GetWindow(EditHandle1,GW_HWNDNEXT);
SendMessage(EditHandle2,WM_SETTEXT,0, Integer(Str2));
回复 点赞
jinjazz 2005年03月25日
高手都忙着赚钱,哪有时间来这里蹲着
回复 点赞
xzhifei 2005年03月25日
是的,这个XY坐标只要是在该控件范围内都有效
回复 点赞
jianlei2002 2005年03月25日
up
回复 点赞
xzhifei 2005年03月25日
是的
回复 点赞
vickly 2005年03月25日
h:=ChildWindowFromPointEx(hParent, Point(10, 10));//根据大约位置查找

Point(10, 10)位置是不是指控件的x,y的位置?
回复 点赞
xzhifei 2005年03月25日
方法一:
hParent := FindWindow(nil, '窗口的标题');
h:=FindWindowEx(hParent ,0,'Edit',nil);//第一个Edit
h:=FindWindowEx(hParent ,h,'Edit',nil);//第二个Edit

方法二:
hParent := FindWindow(nil, '窗口的标题');
h:=ChildWindowFromPointEx(hParent, Point(10, 10));//根据大约位置查找
回复 点赞
Blakhawk 2005年03月25日
up
回复 点赞
楚人无衣 2005年03月25日
FindWindowEx的第二个参数用上一次找到的Edit的Handle再试
回复 点赞
vickly 2005年03月25日
for i := 0 to form.controlCount -1 do
begin
showmessage(controns[i].name);//显示控件的名称
end;

form是窗体的name,而我取出来的只是HWND1~~~~是不是应该写成~~~HWND1.controlCount???
回复 点赞
vickly 2005年03月25日
现在是,我可以找到其中的一个EDIT~~~~~而下一个EDIT我要怎么找????????/
回复 点赞
gxgyj 2005年03月25日
http://community.csdn.net/Expert/topic/3683/3683482.xml?temp=.2261774
回复 点赞
楚人无衣 2005年03月25日
reallike说的对,这里从来都没有高手!
以前写过,现在也忘了,你搜一下FindWindow及FindWindowEx的使用方法,用序号标识你找到的Edit句柄,试着往里面写些东西以确定哪个时从而记录下它的序号,试一下!
回复 点赞
vickly 2005年03月25日
ChildWindowFromPointEx(hParent, Point(10, 10));
Point(10, 10))太难找了~~~~怎么找有简单的方法吗?

X,Y是相对于窗体还是相对于显示器?
回复 点赞
才子鸣 2005年03月25日
回复人: aiirii(ari-求职广州中) ( ) 信誉:403 2005-3-24 19:58:11 得分: 0



是不是CSDN没高手?


==============================


不错
---------------------------------------
小心被杀~~~~~
回复 点赞
发动态
发帖子
非技术区
创建于2007-08-02

588

社区成员

5.4w+

社区内容

Delphi 非技术区
社区公告
暂无公告