123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- namespace HistoryView.Helper;
- public static class SetWindow
- {
- private static IntPtr intPtr; //第三方应用窗口的句柄
- public static void ResizeWindow()
- {
- _ = ShowWindow(intPtr, 0); //先将窗口隐藏
- _ = ShowWindow(intPtr, 3); //再将窗口最大化,可以让第三方窗口自适应容器的大小
- }
- public static bool FindWindow(string formName)
- {
- intPtr = FindWindow(null!, formName);
- return intPtr != IntPtr.Zero;
- }
- public static void Clear()
- {
- _ = ShowWindow(intPtr, 0);
- }
- public static void ExitParent()
- {
- _ = ShowWindow(intPtr, 0);
- SetParent(IntPtr.Zero);
- _ = ShowWindow(intPtr, 9);
- }
- public static void SetParent(IntPtr hWndNewParent)
- {
- _ = ShowWindow(intPtr, 0); //先将窗体隐藏,防止出现闪烁
- _ = SetParent(intPtr, hWndNewParent); //将第三方窗体嵌入父容器
- Thread.Sleep(100); //略加延时
- _ = ShowWindow(intPtr, 3); //让第三方窗体在容器中最大化显示
- //RemoveWindowTitle(intPtr); // 去除窗体标题
- ResizeWindow();
- }
- //private static void RemoveWindowTitle(IntPtr vHandle)
- //{
- // long style = GetWindowLong(vHandle, -16);
- // style &= ~0x00C00000;
- // SetWindowLong(vHandle, -16, style);
- //}
- [DllImport("user32.dll ", EntryPoint = "SetParent")]
- private static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); //将外部窗体嵌入程序
- [DllImport("user32.dll")]
- public static extern IntPtr FindWindow(string lpszClass, string lpszWindow); //按照窗体类名或窗体标题查找窗体
- [DllImport("user32.dll", EntryPoint = "ShowWindow", CharSet = CharSet.Auto)]
- private static extern int ShowWindow(IntPtr hwnd, int nCmdShow); //设置窗体属性
- [DllImport("user32.dll", EntryPoint = "SetWindowLong", CharSet = CharSet.Auto)]
- public static extern IntPtr SetWindowLong(IntPtr hWnd, int nIndex, long dwNewLong);
- [DllImport("user32.dll", EntryPoint = "GetWindowLong", CharSet = CharSet.Auto)]
- public static extern long GetWindowLong(IntPtr hWnd, int nIndex);
- }
|