初学C#之如何得到IE和遨游当前地址栏URL地址
2010-11-26 15:03
633 查看
近来需要用到在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;
}
首先不管是哪个浏览器都不要忘了:
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;
}
相关文章推荐
- C#获取当前IE地址栏的url[转帖]
- 如何用js得到当前页面的url信息方法(JS获取当前网址信息)
- php得到当前页面的URL地址
- ASP.NET 如何获取地址栏URL地址
- 如何用js得到当前页面的url信息方法(JS获取当前网址信息)
- 获取当前 IE 地址栏中的 URL
- 如何通过HttpURLConnection得到http 302的跳转地址
- 利用.NET框架提供的 WebClient类 和 WebRequest类,我们可以很轻易地得到给定URL地址的源代码,很简单,以下是C#的完整的例子.
- 如何通过HttpURLConnection得到http 302的跳转地址
- Winform获取当前IEURL地址
- dedecms文章页调用地址(当前文章URL)如何操作?
- 如何在c#中得到当前目录的路径
- 如何从backing bean中得到当前页面的URL?
- WINCE下,如何在C#里打开一个IE,进入一个URL?
- 如何用js得到当前页面的url信息方法(JS获取当前网址信息)
- C# 调用ie打开URL地址
- 获取当前 IE 地址栏中的 URL
- 织梦教程:如何获取DedeCms当前文章的URL地址
- 如何通过HttpURLConnection得到http 302的跳转地址
- 如何用js得到当前页面的url信息方法(JS获取当前网址信息)