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:运行结果

  • 相关阅读:
    django学习笔记1
    排序多重排序
    06计算列
    填充日期序列
    行,列单元格
    读取excel文件
    监控文本
    天干地支纪年法
    Mysql基础
    JDBC基础
  • 原文地址:https://www.cnblogs.com/yshyee/p/7359870.html
Copyright © 2011-2022 走看看