1. 程式人生 > >C# 通過SendMessage獲取瀏覽器地址欄的地址

C# 通過SendMessage獲取瀏覽器地址欄的地址

ntp bar pac login classname window edit and ces

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:運行結果

技術分享

C# 通過SendMessage獲取瀏覽器地址欄的地址