如何获得窗口的句柄?(100分)

  • 主题发起人 主题发起人 kucio
  • 开始时间 开始时间
K

kucio

Unregistered / Unconfirmed
GUEST, unregistred user!
大家知道网页中的文本框吧(例如登陆电子邮局时输入账号和密码的文本框)<br>我想在程序中改变文本框的内容,于是我用了以下程序:<br>GetCursorPos(jxpoint);<br>WindowHandle:=WindowFromPoint(jxpoint);<br>程序执行时把鼠标移到文本框上,然后由WindowHandle的值就可以知道该文本框<br>的句柄,然后用Sendmessage函数就可以改变文本框的内容了.<br>该程序在IE3中能正常执行,但在IE4和IE5中得到的句柄却是其父窗口的句柄,我<br>试着用了ChildWindowFromPoint函数<br>ChildWindowHandle:=ChildWindowFromPoint(WindowHandle,jxpoint)<br>也不行,不知错在什么地方?
 
我觉得那些EDIT窗口并不存在,是画上的。
 
&gt;&gt;我觉得那些EDIT窗口并不存在,是画上的。<br>很有可能,IE有自己的render引擎.<br><br>想实现这个功能只有通过COM,但是直接控制IE我不会,用TWebBrowser还差不多.<br>
 
ChildWindowFromPoint用的坐标不是屏幕坐标,是client区域的坐标,<br>用ScreenToClient转换坐标再调用ChildWindowFromPoint
 
&gt;&gt;我觉得那些EDIT窗口并不存在,是画上的。<br>如果说是画上的,那为什么在IE3上可以呢,难道IE3与IE4、5有本质的区别吗?<br>
 
IE3和IE4,5是有本质区别的,你可以看看以前的屏幕抓词的算法,在IE3上可以<br>到了ie4,5上就不行了,IE有自己的一套. <br>
 
》但在IE4和IE5中得到的句柄却是其父窗口的句柄,<br>由此来看,可能oo是对的?
 
可以使用EnumWindow的方法,<br>正好有一源程序,是C++的,请原谅,(我不会Delphi)<br>还是EMail吧.<br>
 
To 毛虎林:<br>&nbsp; 我没有收到你的e-mail,麻烦你给我重新发一份。<br>&nbsp; zouguodong@263.net
 
To Pipi:<br>&nbsp; ScreenToClient已经被delphi用到了(form1.screentoclient)<br>&nbsp; 我要如何写声明才能调用该api函数呢?<br>&nbsp;<br>
 
还有人知道吗?
 
window.screentoclient<br>用COM很简单,可是要求IE 是自己create的。
 
多人接受答案了。
 
后退
顶部