C# 通過SendMessage獲取瀏覽器地址欄的地址
阿新 • • 發佈:2017-08-14
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 intSendMessage(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獲取瀏覽器地址欄的地址