/// <summary>
/// 获取指定窗体的标题
/// </summary>
/// <param name="WinHandle">窗体句柄</param>
/// <param name="Title">缓冲区取用于存储标题</param>
/// <param name="size">缓冲区大小</param>
/// <returns></returns>
[DllImport("User32.dll")]
public static extern int GetWindowText(IntPtr WinHandle, StringBuilder Title, int size);
/// <summary>
/// 用于枚举子窗体是的委托
/// </summary>
/// <param name="WindowHandle">窗体句柄</param>
/// <param name="num">自定义</param>
/// <returns></returns>
public delegate bool EnumChildWindow(IntPtr WindowHandle, string num);
/// <summary>
/// 获取指定窗体的所有子窗体
/// </summary>
/// <param name="WinHandle">窗体句柄</param>
/// <param name="ec">回调委托</param>
/// <param name="name">自定义</param>
/// <returns></returns>
[DllImport("User32.dll")]
public static extern int EnumChildWindows(IntPtr WinHandle, EnumChildWindow ecw, string name);
</pre><pre name="code" class="csharp"> IList<IntPtr> _WindowsList = new List<IntPtr>();
public bool GetWindows(IntPtr p_Handle, int p_Param)
{
StringBuilder _ClassName = new StringBuilder(255);
StringBuilder title = new StringBuilder(255);
GetWindowText(p_Handle, title, 255);
GetClassName(p_Handle, _ClassName, 255);
if (_ClassName.ToString() == "IEFrame")
_WindowsList.Add(p_Handle);
return true;
}
/// <summary>
/// 枚举窗体
/// </summary>
/// <param name="handle"></param>
/// <param name="num"></param>
/// <returns></returns>
private bool EnumChild(IntPtr handle, string num)
{
StringBuilder title = new StringBuilder();
//StringBuilder type = new StringBuilder();
title.Length = 100;
//type.Length = 100;
GetWindowText(handle, title, 100);//取标题
//GetClassName(handle, type, 100);//取类型
listBox2.Items.Add(title);
return true;
}
private void btnIEWnd_Click(object sender, EventArgs e)
{
EnumWindowsProc _Proc = new EnumWindowsProc(GetWindows);
EnumWindows(_Proc, 0);
if (_WindowsList.Count > 0)
{
hwnd = _WindowsList[0];
//SetWindowPos(hwnd, -1, 0, 0, 0, 0, 1 | 2);
SetForegroundWindow(hwnd);
}
}
</pre><pre name="code" class="csharp"> private void btnSubWindow_Click(object sender, EventArgs e)
{
EnumWindowsProc _Proc = new EnumWindowsProc(GetWindows);
EnumWindows(_Proc, 0);
EnumChildWindow ecw = new EnumChildWindow(EnumChild);
for (int k = 0; k < _WindowsList.Count; k++)
{
IntPtr mainWindowHandle = _WindowsList[k];
EnumChildWindows(mainWindowHandle, ecw, "");
}
if (_WindowsList.Count > 0)
{
hwnd = _WindowsList[0];
SetForegroundWindow(hwnd);
}
}
</pre><pre name="code" class="csharp">