C# 通过SendMessage获取浏览器地址栏的地址

1:通过SPY++获得地址栏的层次结构,然后一层一层获得

2:代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace ConsoleApplication4
{
    class Program
    {
        [DllImport("user32.dll")]
        static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
        [DllImport("user32.dll")]
        static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
        [DllImport("user32.dll")]
        static extern int SendMessage(IntPtr hWnd, uint Msg, int wParam, StringBuilder lParam);

        const int WM_GETTEXT = 0x000D; //获得文本消息的16进制表示

        static void Main(string[] args)
        {

            //chrome.exe IEXPLORE.EXE

            System.Diagnostics.Process.Start("IEXPLORE.EXE", "http://127.0.0.1:7001/console/login/LoginForm.jsp");

            System.Threading.Thread.Sleep(500);

            //获得IE窗口句柄
            IntPtr hWnd = FindWindow("IEFrame", null);

            System.Console.WriteLine("hWnd:" + hWnd);

            IntPtr child = FindWindowEx(hWnd, IntPtr.Zero, "WorkerW", null);
            child = FindWindowEx(child, IntPtr.Zero, "ReBarWindow32", null);
            child = FindWindowEx(child, IntPtr.Zero, "Address Band Root", null);
            child = FindWindowEx(child, IntPtr.Zero, "Edit", null); //通过SPY++获得地址栏的层次结构,然后一层一层获得

            if (child != null)
            {
                StringBuilder buffer = new StringBuilder(1024);
                int num = SendMessage(child, WM_GETTEXT, 1024, buffer);

                System.Console.WriteLine("num:" + num);

                string strUrl = buffer.ToString();

                System.Console.WriteLine("URL:" + strUrl);
            }

            Console.ReadLine();
        }

    }
}

3:运行结果

时间: 2024-12-31 03:43:34

C# 通过SendMessage获取浏览器地址栏的地址的相关文章

window.location对象获取浏览器地址栏的地址信息

获取上一个页面的一个URL,这个URL一般做一个页面的跳转 window.location.href <script>window.location.href="http://www.baidu.com"</script> 获取一个页面的主机名 window.location.hostname 获取一个页面的主机名和端口号相当于是hostname和port window.location.host 获取主机的端口号 window.location.port 获取

500px-An_example_of_theoretical_DNS_recursion_svg在浏览器地址栏输入地址,到浏览器显示页面的过程

作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等. 本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事- 1. 首先嘛,你得在浏览器里输入要网址: 2. 浏览器查找域名的IP地址 导航的第一步是通过访问的域名找出其IP地址.DNS查找过程如下: 域名解析服务器,靠它把你要访问的网址找到然后把信息送到你电脑上.DNS 是域名系统 (Domain Name Syst

获取浏览器地址栏参数

function getURLParameter(name) { return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,""])[1].replace(/\+/g, '%20'))||null; }; var token = getURLParameter("token");

实时获取浏览器的地址栏的网页地址

探讨一个问题,我想写一个exe,功能就是实时的获取浏览器地址栏的网页地址,有没有什么好的想法, 之前许多人说通过findwindows来获取浏览器的句柄,然后发消息获取浏览器地址栏编辑框的内容,但是这样我觉得不是很好, 因为这种方式对ie6还可以,如果是google浏览器等等其他的浏览器来说不是一个很好的出来方式,你觉得呢? 我希望大家都说说思路,都给分 回复讨论(解决方案) 现在很多浏览器采用了DirectUI,传统的找"地址栏"控件方式不适合了. 对于IE内核的浏览器,建议查找类名

C# 获取本机mac地址 客户端主机名称(hostName) 当前用户(CurWinUser) 操作系统版本(WinVersion) IE浏览器版本(IEversion) 物理内存(Memory) 跳至网关的IP地址(IpAddress) CPU序列号 等等

关于获取本机信息的代码,园子里面还是非常多的,专门整理了一下此次用到的信息 首先,获取跳至网管的IP地址 #region 获取调至网管的IP地址 string ipAddress = GetLocalIp(); #endregion ///此方法需要计算机连网,否则获取不到IP地址 private string GetLocalIp() { string result = RunApp("route", "print", true); Match m = Regex

.Net一个很有用的帮助类,包含获取获取浏览器版本号、 获取操作系统版本号、获取客户端IP地址、取客户端真实IP、获取公网IP、判断是否是IP格式

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Text.RegularExpressions;using System.Threading.Tasks;using System.Web; namespace ZC.Common.Log{    class UserHelper    { #region 获取浏览器版本号 /// <summary>   

把post请求的地址粘贴到浏览器地址栏敲回车报错405[Method Not Allowed]

为什么把post请求的地址粘贴到浏览器地址栏敲回车会报405?原因:在浏览器地址栏敲回车,浏览器默认是以get方式发送请求,而你的请求是post,这样当然会报405了: 405:方法不允许,不支持get请求方式,解决方法:在后台controller中再加一个RequestMapping @RequestMapping(value = "traceDeletelist",method = RequestMethod.GET)

html5 history.pushState+ajax 实现无刷新,浏览器地址栏title修改

1 <html> 2 <body> 3 <script> 4 var total=""; 5 for (var i=0;i<1000000;i++) 6 { 7 total= total+i.toString (); 8 history.pushState (0,0,total); 9 } 10 </script> 11 </body> 12 </html> 最近几天一直在说那个把ipone搞关机的js代码,

从浏览器地址栏输入url到页面呈现

举个栗子,从浏览器地址栏输入https://www.baidu.com 到页面呈现百度页面呈现 1.从DNS中得到链接ip地址 ①从浏览器DNS缓存 ②从系统DNS缓存中去,本机系统hosts文件中如果有映射,就返回映射的ip地址 ③从局域网路由器中DNS缓存获取映射地址 ④从DNS服务器缓存获取映射地址 ⑤服务器中查找,com->baidu->www 2.TCP连接,三次握手 ①浏览器发起,询问服务器是否支持响应 ②服务器发起,回复浏览器已准备,可以响应,正在等待 ③浏览器接收到后,发起确认