Я пытаюсь получить дескриптор дочернего диалогового окна. Я пытался использовать FindWindowEx, но это не сработало. Вместо этого FindWindow работал.
Я провел эксперимент с окном параметров визуальной студии со следующим кодом:
IntPtr vsHandle = Process.GetProcessById(vsProcessId).MainWindowHandle; // consistent with spy++'s parent handle of options window
IntPtr optionsHandle = FindWindowEx(vsHandle, IntPtr.Zero, "#32770", "Options"); // returns 0
IntPtr optionsHandle2 = FindWindow("#32770", "Options"); // returns correct handle
Насколько я понимаю, FindWindowEx должен был работать, это дочернее окно.
Я использую Windows XP, а также пытался использовать FindWindowEx (vsHandle, IntPtr.Zero, "# 32770", null). Не работает. Похоже, что единственный способ получить его - использовать FindWindow, что недостаточно, поскольку могут быть открыты два родительских экземпляра с одним и тем же диалоговым окном.
Это декларация:
[DllImport("user32.dll")]
Private static extern IntPtr FindWindow(string className, string windowTitle);
[DllImport("user32.dll")]
Private static extern IntPtr FindWindowEx(IntPtr parentHWnd, IntPtr childAfterHWnd, string className, string windowTitle);
Заранее спасибо.