怎么得到WebBrowser中某个控件的坐标?
比如某个input,
需要得到的是页面中的坐标,不是桌面屏幕坐标。找了很久的资料了,麻烦高人下帮帮忙。
此事很急,如果需要RMB支持,请把联系方式留一下,不需要的话就帮帮小弟吧。

解决方案 »

  1.   

    IHTMLElement2::getBoundingClientRect
      

  2.   

    某些情况下可以考虑这方法,但是,当WebBrowser的滚动条被拖动了的话,知道这个值也没法子了。
      

  3.   

    楼主可能是要一个分析HTML什么的。。
      

  4.   

    哥,我不是弄外挂的,碰到了这些事,必须得学习关于html上面的应用。
    @jiangsheng 目前我就用这的这个方式,但是还是不准,会多出两素,查阅了相关资料搞了搞,还是没有完美解决,始终不是多两像素或差两像素,在IE6 7 8下。我其实不是在WebBrowser下, 是在IE下,用接口来弄的。这样提问,是想让问题更明了。@HSFZXJY 对的,是在研究html相关知识,关于不管是不是delphi代码实现,用js代码也一样,同样碰到这个问题,真心拿不准确精度。 @gzzai 那个窗口是IE弹出的一个子窗口,没有拖动条,就一个红叉叉。
      

  5.   

    首先要取得WebBrowser中处理网页的'Internet Explorer_Server'的句柄,再取得鼠标在的'Internet Explorer_Server'中的坐标,就是鼠标在webbrowser中的坐标
    var h: THandle;
      p: TPoint;
      h:= FindWindowEX(WebBrowser1.Handle, 0, 'Shell DocObject View', nil);
      h:= FindWindowEX(WndChild, 0, 'Internet Explorer_Server', nil);
        GetWindowRect(h,r);//得到窗口的左上角坐标
    //  label4.Caption:=format('x: %d, y: %d',[r.left,r.top]);
      Windows.ScreenToClient(h, p);
      memo1.Lines.Add(inttostr(h)+':'+format('x: %d, y: %d',[p.X,p.y]));//鼠标在窗口里的相对位置坐标