当前位置:编程学习 > C#/ASP.NET >>

如何将鼠标移动到,webbrowser控件上指定的标签上。

做一页面个模拟点击,碰到一个难题。
如何将鼠标移动到,webbrowser控件上指定的标签上。是鼠标呈现“手型” --------------------编程问答-------------------- 怎么没人懂 --------------------编程问答-------------------- 先找出你要的标签的句柄,用SENDMESSAGE和MOUSEMOVE用可以了 --------------------编程问答-------------------- <div   onmouseover= "this.style.backgroundColor= '#0099cc ' "   style= "cursor:hand; "> test </div>  --------------------编程问答--------------------
引用 2 楼  的回复:
先找出你要的标签的句柄,用SENDMESSAGE和MOUSEMOVE用可以了

能不能具体点啊 --------------------编程问答--------------------
引用 2 楼  的回复:
先找出你要的标签的句柄,用SENDMESSAGE和MOUSEMOVE用可以了


笨蛋

--------------------编程问答--------------------
引用 5 楼  的回复:
引用 2 楼 的回复:

先找出你要的标签的句柄,用SENDMESSAGE和MOUSEMOVE用可以了


笨蛋
能有更好的方法吗? --------------------编程问答--------------------
引用 6 楼  的回复:
引用 5 楼  的回复:
引用 2 楼 的回复:

先找出你要的标签的句柄,用SENDMESSAGE和MOUSEMOVE用可以了


笨蛋
能有更好的方法吗?


把你的问题描述清楚
模拟点击为什么要呈现“手型”?
指定的"标签"又是什么?
最好给出HTML

--------------------编程问答-------------------- 实也不用呈现“手型”,只是需要模拟点击而已。
通过下面的代码已经能够定位到需要点击的链接link[ii],现在的问题是,怎么把鼠标移动到需要点击的链接上,然后点击。
                HtmlElementCollection link = webBrowser1.Document.GetElementsByTagName("a");
                for (int ii = 0; ii < link.Count; ii++)
                {
                    if (link[ii].GetAttribute("href").IndexOf(tg_url) >= 0)
                    {
                        link[ii].InvokeMember("click");
                        mouse_event(MouseEventFlag.LeftDown, left, top, 0, UIntPtr.Zero);
                        //执行左键按下 
                        mouse_event(MouseEventFlag.LeftUp, left, top, 0, UIntPtr.Zero);
                        //执行左键松开
                    } 
                } --------------------编程问答-------------------- link[ii].InvokeMember("click");
无法实现手动点击的效果。 --------------------编程问答--------------------
        private void Form1_Load(object sender, EventArgs e)
        {
            webBrowser1.Navigate("about:blank");
            webBrowser1.Document.Write("<a href=\"http://www.csdn.net/\" target=\"_blank\">CSDN</a>");
        }

        private void button1_Click(object sender, EventArgs e)
        {
            HtmlElementCollection link = webBrowser1.Document.GetElementsByTagName("a");
            for (int ii = 0; ii < link.Count; ii++)
            {
                if (link[ii].GetAttribute("href").IndexOf("csdn",StringComparison.CurrentCultureIgnoreCase) >= 0)
                {
                    link[ii].InvokeMember("click");                  
                }
            }

        }


没问题

--------------------编程问答--------------------
引用 10 楼  的回复:
C# code
        private void Form1_Load(object sender, EventArgs e)
        {
            webBrowser1.Navigate("about:blank");
            webBrowser1.Document.Write("<a href=\"http://www.csdn.net……

link[ii].InvokeMember("click");
无法实现手动点击的效果。 --------------------编程问答-------------------- 还要手工点击啊
SEO软件?

--------------------编程问答-------------------- 需要移动鼠标到链接上,然后调用user32.dll,API模拟点击 --------------------编程问答--------------------
引用 12 楼  的回复:
还要手工点击啊
SEO软件?

呵呵,是啊。 --------------------编程问答--------------------
        private void Form1_Load(object sender, EventArgs e)
        {
            webBrowser1.Navigate("about:blank");
            webBrowser1.Document.Write("  <a href=\"http://www.csdn.net/\" target=\"_blank\">CSDN</a>");
        }

        [DllImport("user32.dll", EntryPoint = "SetCursorPos")]
        private static extern int SetCursorPos(int x, int y); 

        private void button1_Click(object sender, EventArgs e)
        {
            HtmlElementCollection link = webBrowser1.Document.GetElementsByTagName("a");
            for (int ii = 0; ii < link.Count; ii++)
            {
                if (link[ii].GetAttribute("href").IndexOf("csdn", StringComparison.CurrentCultureIgnoreCase) >= 0)
                {
                    Rectangle rect = link[ii].OffsetRectangle;

                    Point p = new Point(rect.Left + 2, rect.Top + 2);
                    p = this.PointToScreen(p);

                    SetCursorPos(p.X, p.Y);
                }
            }
        }


点击之前加上SetCursorPos

--------------------编程问答-------------------- 不知道为什么
 Rectangle rect = link[ii].OffsetRectangle;

Point p = new Point(rect.Left + 2, rect.Top +2);

rect.Left ,rect.Top 的值一直都是0 --------------------编程问答-------------------- 要转换啊
p = this.PointToScreen(p);

--------------------编程问答--------------------                         Rectangle rect = link[ii].OffsetRectangle;

                        Point p = new Point(rect.Left + 10, rect.Top +10);
                        p = this.PointToScreen(p);

                        SetCursorPos(p.X, p.Y);

有的,不过好像鼠标不能移动到链接上。一直在webbrowser边缘上。 --------------------编程问答--------------------
引用 17 楼  的回复:
要转换啊
p = this.PointToScreen(p);

你的可以移动到链接上吗? --------------------编程问答-------------------- 如果紧紧是为了实现当鼠标放在控件上呈现手型可以使用css。
<div id="test">
</div>

css:
#test{cursor:pointer;} --------------------编程问答-------------------- 除 --------------------编程问答-------------------- [DllImport("User32.Dll")]
public static extern long SetCursorPos(int x, int y);


SetCursorPos(p.x, p.y);
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,