初学C#之如何得到IE和遨游当前地址栏URL地址

      近来需要用到在C/S程序中得到IE和遨游当前打开的地址,于是在baidu和gooogle中是大搜而特搜,又在搜索出来的大量文章中一个个的测试,可把我累晕了。终于,功夫不负有心人,终于搞定!原来这个简单,特对此作出总结。

      首先不管是哪个浏览器都不要忘了:

        

        using System.Runtime.InteropServices;

 

       const int WM_GETTEXT = 0X000D;//获得文本消息的16进制。 

     1、IE篇:

           声明API ,注意了IE和遨游的是不一样的:

        [DllImport("user32")]
           public static extern Int FindWindow(string lpClassName,string lpWindowName);
        [DllImport("user32")]
          public static extern Int FindWindowEx(Int hwndParent, IntPtr hwndChildAfter, string lpClassName, string lpWindowName);
        [DllImport("user32")]
          public static extern int GetWindowText(int hwnd, StringBuilder buf, int nMaxCount);
        [DllImport("user32")]
          public static extern int SendMessage(IntPtr hwnd, int msg,int wParam, StringBuilder lParam);

private void button6_Click(object sender, EventArgs e)
        {
            String ls_url;

            ls_url = GetUrl();
            MessageBox.Show(ls_url);

        }
        public static string GetUrl()
        {

                int parent = FindWindow("IEFrame", null);

                int child = findwindowex(parent, 0, "workerw", null);
                child = findwindowex(child, 0, "rebarwindow32", null);
                child = findwindowex(child, 0, "comboboxex32", null);
                child = findwindowex(child, 0, "combobox", null);
                child = findwindowex(child, 0, "edit", null);//通过spy++获得地址栏层次结构,然后一层层的获得

                  StringBuilder buffer = new StringBuilder(1024);

            int num = SendMessage(Child, WM_GETTEXT, 1024, buffer);
            string url = buffer.ToString();


            return url;
        }

      

2、遨游篇:

声明API:

      public static extern IntPtr FindWindow(string lpClassName,string lpWindowName);
        [DllImport("user32")]
        public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpClassName, string lpWindowName);
        [DllImport("user32")]
        public static extern int GetWindowText(int hwnd, StringBuilder buf, int nMaxCount);
        [DllImport("user32")]
        public static extern int SendMessage(IntPtr hwnd, int msg,int wParam, StringBuilder lParam);
调用:

private void button6_Click(object sender, EventArgs e)
        {
            String ls_url;

            ls_url = GetUrl();
            MessageBox.Show(ls_url);

        }
        public static string GetUrl()
        {
                IntPtr parentMx = FindWindow("Maxthon2_Frame", null);
                IntPtr Child = FindWindowEx(parentMx , IntPtr.Zero,"XTPDockBar",null);
                Child = FindWindowEx(Child, IntPtr.Zero, "XTPToolBar", "地址栏");
                Child = FindWindowEx(Child, IntPtr.Zero, "RichEdit20W", null);
            StringBuilder buffer = new StringBuilder(1024);

            int num = SendMessage(Child, WM_GETTEXT, 1024, buffer);
            string url = buffer.ToString();


            return url;
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值