zoukankan      html  css  js  c++  java
  • 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:运行结果

  • 相关阅读:
    使用Docker搭建Wordpress
    Django开发Web页面html增加判断展示
    Python如何取小数点位数
    html内容可编写
    MySQL 设置 非空约束依然能插进去的办法
    Git拉取远程所有分支
    my.ini 配置文件
    node
    TP upload 上传根目录不存在
    linux 安装 memcache
  • 原文地址:https://www.cnblogs.com/yshyee/p/7359870.html
Copyright © 2011-2022 走看看