原理很简单就是WinApi的调用而已。
class="brush:csharp;gutter:false;">/// <summary> /// 查询窗体 /// </summary> /// <param name="lpClassName"></param> /// <param name="lpWindowName"></param> /// <returns></returns> [DllImport("User32.dll", EntryPoint = "FindWindow")] public extern static IntPtr FindWindow(string lpClassName, string lpWindowName); /// <summary> /// 获取窗体标题 /// </summary> /// <param name="hwnd"></param> /// <param name="text"></param> /// <param name="maxLength"></param> /// <returns></returns> [DllImport("user32.dll")] private static extern int GetWindowText(IntPtr hwnd, StringBuilder text, int maxLength); /// <summary> /// 设置窗体显示 /// </summary> /// <param name="hwnd"></param> /// <param name="nCmdShow">1-常规 2-最小化 3-最大化</param> /// <returns></returns> [DllImport("user32.dll", EntryPoint = "ShowWindow", CharSet = CharSet.Auto)] public static extern int ShowWindow(IntPtr hwnd, int nCmdShow); /// <summary> /// 设置窗体是否置顶 /// </summary> /// <param name="hWnd"></param> /// <param name="hWndInsertAfter"></param> /// <param name="x"></param> /// <param name="y"></param> /// <param name="Width"></param> /// <param name="Height"></param> /// <param name="flags"></param> /// <returns></returns> [DllImport("user32.dll", CharSet = CharSet.Auto)] private static extern int SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int x, int y, int Width, int Height, int flags);
通过spy工具获取QQ视频窗体的类名是"TXGuiFoundation"
IntPtr maindHwnd = FindWindow("TXGuiFoundation", null); //获得QQ窗体的句柄 if (maindHwnd != IntPtr.Zero) { //StringBuilder sb = new StringBuilder(255); //GetWindowText(maindHwnd, sb, 255); //MessageBox.Show(sb.ToString()); ShowWindow(maindHwnd, 3); SetWindowPos(maindHwnd, -2, 0, 0, 0, 0, 0x001 | 0x002 | 0x040); } else { MessageBox.Show("没有找到窗口"); }
需要双击把视频窗口点击出来,运行代码既可。