Esempio n. 1
0
        public void FreeConsole(object wrapper)
        {
            WinApiHelper.FreeConsole();
            ConsoleHandle = IntPtr.Zero;
            //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(windowHandle, this.pconsole.Handle); //panel1.Handle为要显示外部程序的容器
            //WinApiHelper.ShowWindow(windowHandle, 3);
        }
Esempio n. 2
0
        public void MoveWinByHandle(IntPtr handle)
        {
            if (FollowMainWin == null)
            {
                return;
            }
            int x = 0;
            int y = FollowMainWin.Location.Y;

            if (FollowMainWin.Location.X > Screen.PrimaryScreen.Bounds.Width / 2 + 100)
            {
                x = FollowMainWin.Location.X - 900;
            }
            else
            {
                x = FollowMainWin.Location.X + FollowMainWin.Size.Width;
            }
            int nWidth  = 900;
            int nHeight = FollowMainWin.Size.Height;

            WinApiHelper.MoveWindow(handle, x, y, nWidth, nHeight, true);
        }
Esempio n. 3
0
 public void CloseWin(IntPtr handle)
 {
     WinApiHelper.SendMessage(handle, WinApiHelper.WM_SYSCOMMAND, WinApiHelper.SC_CLOSE, 0);
 }
Esempio n. 4
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);
 }
Esempio n. 5
0
 public void SetTopMost(string key)
 {
     WinApiHelper.SetForegroundWindow(WinHanles[key]);
 }