您的位置:首页 > 编程语言 > C#

初学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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: