Esempio n. 1
0
        public void LoadConsole(object wrapper)
        {
            WinApiHelper.AllocConsole();
            ConsoleHandle = WinApiHelper.FindWindow(null, Process.GetCurrentProcess().MainModule.FileName);
            IntPtr closeMenu = WinApiHelper.GetSystemMenu(ConsoleHandle, IntPtr.Zero);
            uint   SC_CLOSE  = 0xF060;

            WinApiHelper.RemoveMenu(closeMenu, SC_CLOSE, 0x0);
            HandleRef ParentHandle = new HandleRef(wrapper, ConsoleHandle);
            // 初始化窗口风格
            IntPtr Style     = WinApiHelper.GetWindowLongPtr(ConsoleHandle, WinApiHelper.GWL_STYLE);
            uint   tempStyle = (uint)Style.ToInt32() & ~WinApiHelper.WS_CAPTION & ~WinApiHelper.WS_SYSMENU & ~WinApiHelper.WS_SIZEBOX;

            WinApiHelper.SetWindowLongPtr(ParentHandle, WinApiHelper.GWL_STYLE, new IntPtr(tempStyle));


            WinApiHelper.SetParent(ConsoleHandle, ((Control)wrapper).Handle); //panel1.Handle为要显示外部程序的容器
            WinApiHelper.ShowWindow(ConsoleHandle, 3);
        }
Esempio n. 2
0
 /// <summary>
 /// 设置单个窗口显示状态
 /// </summary>
 /// <param name="isshow">
 ///SW_FORCEMINIMIZE	11	无论拥有窗口的线程是否被挂起,均使窗口最小化。在从其他线程最小化窗口时才使用这个参数。有点类似强制最小化窗口
 ///SW_HIDE	0	隐藏窗口并且激活其它窗口
 ///SW_MAXIMIZE	3	最大化标识的窗口
 ///SW_MINIMIZE	6	最小化窗口,并且按Z序激活下一个窗口
 ///SW_RESTORE	9	激活并显示窗口,如果窗口最小化或最大化,系统恢复其原来的大小和位置。当恢复最小化窗口时,程序应该使用这个标志
 ///SW_SHOW	5	在当前位置及大小情况下,激活并显示窗口
 ///SW_SHOWDEFAULT	10	父进程通过 CreateProcess 创建当前进程时,使用此标志来按 STARTUPINFO 结构体中的标志显示窗口
 ///SW_SHOWMAXIMIZED	3	激活,并按最大化方式显示窗口
 ///SW_SHOWMINIMIZED	2	激活,并按最小化方式显示窗口
 ///SW_SHOWMINNOACTIVE	7	最小化窗口。除了窗口不被激活,其它的类似SW_SHOWMINIMIZED
 ///SW_SHOWNA	8	以当前的大小和位置显示窗口。除了窗口不被激活,其它的类似SW_SHOW
 ///SW_SHOWNOACTIVATE	4	以最近的大小和位置显示窗口,除了窗口不被激活,其它的类似SW_SHOWNORMAL
 ///SW_SHOWNORMAL	1	激活和显示窗口。如果窗口是最大化或最小化,恢复其大小和位置。程序不应该在第一次调用ShowWindow时设置此标志
 /// </param>
 /// <param name="handle">窗口句柄</param>
 public void SetSingleShow(int cmdShow, IntPtr handle)
 {
     WinApiHelper.ShowWindow(handle, cmdShow);
 }