5
我有一個功能,我可以對出現的窗口作出反應。現在我想知道如果出現的窗口是一個消息框。如果它是一個,我想閱讀它的文本。檢查窗口是否是消息框
我已經能夠通過
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
internal static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count);
[DllImport("user32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
internal static extern int GetClassName(IntPtr hWnd, StringBuilder lpClassName, int nMaxCount);
[DllImport("user32.dll")]
internal static extern int GetWindowThreadProcessId(IntPtr hWnd, out int lpdwProcessId);
提取的窗口標題,類名和進程ID,但我怎樣才能找到一個消息的文本?
爲了讓我用這所有窗口:
internal static class WindowFinder
{
private static readonly List<IntPtr> listWindows = new List<IntPtr>();
private static bool IsWindowOrDialog(IntPtr hwnd, int lParam)
{
if (NativeMethods.IsHungAppWindow(hwnd) || !NativeMethods.IsWindowVisible(hwnd))
return true;
listWindows.Add(hwnd);
return true;
}
internal static IEnumerable<IntPtr> GetAllWindows()
{
listWindows.Clear();
NativeMethods.EnumWindows(IsWindowOrDialog, IntPtr.Zero);
return listWindows;
}
}
,而不是窗口消息打交道了,等等,爲什麼不使用[輔助功能和自動化的管理類( http://msdn.microsoft.com/en-us/library/ms753388.aspx)這是專爲這種事情。 – 2013-02-21 10:16:06