Example #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);
        }