先用SPY++找到句柄
然后在程序中利用winapi找到该句柄值
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace ConsoleApplication1
{
class Program
{
[DllImport("user32.dll")]
static extern IntPtr FindWindow(string strClass, string strWindow);
[DllImport("user32.dll")]
static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string strClass, string strWindow);
[DllImport("user32.dll")]
static extern IntPtr SendMessageTimeout(IntPtr windowHandle, uint Msg, IntPtr wParam, StringBuilder lParam, SendMessageTimeoutFlags flags, uint timeout, out IntPtr result);
[Flags]
public enum SendMessageTimeoutFlags : uint
{
SMTO_NORMAL = 0x0000,
SMTO_BLOCK = 0x0001,
SMTO_ABORTIFHUNG = 0x0002,
SMTO_NOTIMEOUTIFNOTHUNG = 0x0008
}
const uint WM_GETTEXT = 0x000D;
static void Main(string[] args)
{
IntPtr ip = FindWindow("IEFrame", null);
ip = FindWindowEx(ip, IntPtr.Zero, "WorkerW", null);
ip = FindWindowEx(ip, IntPtr.Zero, "ReBarWindow32", null);
ip = FindWindowEx(ip, IntPtr.Zero, "Address Band Root", null);
ip = FindWindowEx(ip, IntPtr.Zero, "Edit", null);
StringBuilder sb = new StringBuilder(100);
IntPtr s;
SendMessageTimeout(ip, WM_GETTEXT, (IntPtr)100, sb, SendMessageTimeoutFlags.SMTO_NORMAL, 1000, out s);
Console.WriteLine(sb.ToString());
Console.ReadKey();
}
}
}