我正在尝试获取子对话框窗口的句柄。我试过使用 FindWindowEx,但没有用。相反,FindWindow 确实有效。
我用 Visual Studio 的选项窗口做了一个实验,代码如下:
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);
提前致谢。