Esempio n. 1
0
 public static IHTMLElement FindElement(IntPtr fromHandle, IHTMLDocument2 doc, int x, int y)
 {
     IHTMLElement elem = null;
     Rect lpRect = new Rect();
     WindowUtil.GetWindowRect(fromHandle, out lpRect);
     elem = doc.elementFromPoint(x - lpRect.Left, y - lpRect.Top);
     while (((elem != null) && (elem.tagName != null)) && (elem.tagName.ToLower().Equals("iframe") || elem.tagName.ToLower().Equals("frame")))
     {
         Rectangle elementRect = GetElementRect(doc.body, elem);
         IWebBrowser2 o = elem as IWebBrowser2;
         IHTMLDocument2 document = o.Document as IHTMLDocument2;
         IHTMLElement element2 = document.elementFromPoint((x - lpRect.Left) - elementRect.X, (y - lpRect.Top) - elementRect.Y);
         if (element2 != null)
         {
             elem = element2;
         }
         Marshal.ReleaseComObject(document);
         Marshal.ReleaseComObject(o);
     }
     return elem;
 }
Esempio n. 2
0
        public static IHTMLElement FindElement(IntPtr fromHandle, IHTMLDocument2 doc, int x, int y)
        {
            IHTMLElement elem   = null;
            Rect         lpRect = new Rect();

            WindowUtil.GetWindowRect(fromHandle, out lpRect);
            elem = doc.elementFromPoint(x - lpRect.Left, y - lpRect.Top);
            while (((elem != null) && (elem.tagName != null)) && (elem.tagName.ToLower().Equals("iframe") || elem.tagName.ToLower().Equals("frame")))
            {
                Rectangle      elementRect = GetElementRect(doc.body, elem);
                IWebBrowser2   o           = elem as IWebBrowser2;
                IHTMLDocument2 document    = o.Document as IHTMLDocument2;
                IHTMLElement   element2    = document.elementFromPoint((x - lpRect.Left) - elementRect.X, (y - lpRect.Top) - elementRect.Y);
                if (element2 != null)
                {
                    elem = element2;
                }
                Marshal.ReleaseComObject(document);
                Marshal.ReleaseComObject(o);
            }
            return(elem);
        }
Esempio n. 3
0
        /*
         *  Takes webdoc from control.webbrowser. also two int for x-y coordinates.
         *  It takes a point, and find any DOM objects around the point. (with bound of +- 10)
         *  Ultimately, it adds to hashtable dom_cord with
         *  the DOM element (href) as key
         *  position coordinate Point was value (cord_dom -> key: cord value: dom)
         *
         */
        private void get_around(IHTMLDocument2 webdoc, int xcord, int ycord)
        {
            for (int i = 0; i < 30; i+=3)
            {
                for (int j = 0; j < 30; j+=3)
                {
                    try
                    {
                        var obj_1 = webdoc.elementFromPoint(xcord + i, ycord + j).getAttribute("href");
                        var obj_2 = webdoc.elementFromPoint(xcord - i, ycord + j).getAttribute("href");
                        var obj_3 = webdoc.elementFromPoint(xcord + i, ycord - j).getAttribute("href");
                        var obj_4 = webdoc.elementFromPoint(xcord - i, ycord - j).getAttribute("href");

                        if (obj_1 is String)
                        {   if (obj_1.Length > 0)
                            {
                                Point ele_coord = new Point(xcord + i, ycord + j);
                                dom_cord.Add(obj_1, ele_coord);
                                cord_dom.Add(ele_coord, obj_1);
                            }
                        }
                        if (obj_2 is String)
                        {   if (obj_2.Length > 0)
                            {
                                Point ele_coord = new Point(xcord - i, ycord + j);
                                dom_cord.Add(obj_2, ele_coord);
                                cord_dom.Add(ele_coord, obj_2);
                            }
                        }
                        if (obj_3 is String)
                        {   if (obj_3.Length > 0)
                            {
                                Point ele_coord = new Point(xcord + i, ycord - j);
                                dom_cord.Add(obj_3, ele_coord);
                                cord_dom.Add(ele_coord, obj_3);
                            }
                        }
                        if (obj_4 is String)
                        {
                            if (obj_4.Length > 0)
                            {
                                Point ele_coord = new Point(xcord - i, ycord - j);
                                dom_cord.Add(obj_4, ele_coord);
                                cord_dom.Add(ele_coord, obj_4);
                            }
                        }
                    }
                    catch { }
                }
            }
        }
Esempio n. 4
0
 public IHTMLElement elementFromPoint(int x, int y)
 {
     return(_innerDoc2.elementFromPoint(x, y));
 }