public delegate bool CallBack(int hwnd, int lParam);
[DllImport("User32.dll", EntryPoint = "FindWindow")]
public static extern IntPtr FindWindow(string className, string windowName);
[DllImport("user32.dll")]
public static extern int EnumChildWindows(int hWndParent, CallBack lpfn, int lParam);
[DllImport("user32.dll")]
static extern int GetWindowText(int hWnd, StringBuilder text, int count);
[DllImport("user32.dll", EntryPoint = "GetDlgCtrlID")]
private static extern int GetDlgCtrlID(IntPtr hDlg);
public static CallBack callBackEnumChildWindows = new CallBack(ChildWindowProcess);
static StringBuilder reader;
public static bool ChildWindowProcess(int hwnd, int lParam)
{
int id = GetDlgCtrlID(new IntPtr(hwnd));
if(id== lParam)
{
reader = new StringBuilder(255);
GetWindowText(hwnd, reader, 255);
return false;
}
return true;
}
//传入父窗口标题 id子窗口的id ,就可以得到它的text了
static public string GetText(string parent, int id)
{
reader = new StringBuilder();
IntPtr Wnd = new IntPtr(0);
Wnd = FindWindow(null, parent);
if (Wnd != IntPtr.Zero)
{
EnumChildWindows(Wnd.ToInt32(), callBackEnumChildWindows, id);
return reader.ToString();
}
return "";
}