Exemple #1
0
        /// <summary>
        /// 设置窗口透明度
        /// </summary>
        /// <param name="hWnd">窗口句柄</param>
        /// <param name="alpha">透明度</param>
        public static void SetWindowAlpha(IntPtr hWnd, byte alpha)
        {
            //在调用SetLayeredWindowAttributes 之前,需要给窗口加上WS_EX_LAYERED属性,否则会无效
            var wndExStyle = Win32Funcs.GetWindowLongWrapper(hWnd, Win32Consts.GWL_EXSTYLE);

            wndExStyle |= Win32Consts.WS_EX_LAYERED;
            Win32Funcs.SetWindowLongWrapper(hWnd, Win32Consts.GWL_EXSTYLE, wndExStyle);

            //设置透明度
            Win32Funcs.SetLayeredWindowAttributesWrapper(hWnd, 0, alpha, Win32Consts.LWA_ALPHA);
        }
Exemple #2
0
        /// <summary>
        /// 将窗口置顶
        /// </summary>
        /// <param name="hWnd">窗口句柄</param>
        public static void SetWindowTopMost(IntPtr hWnd)
        {
            //SWP_NOSIZE:维持当前尺寸(忽略cx和cy参数)
            //SWP_NOMOVE:维持当前位置(忽略X和Y参数)
            const uint flags = Win32Consts.SWP_NOSIZE | Win32Consts.SWP_NOMOVE;

            Win32Funcs.SetWindowPosWrapper(hWnd, Win32Consts.HWND_TOPMOST_PTR, 0, 0, 0, 0, flags);
            Win32Funcs.SendMessageWrapper(hWnd, Win32Consts.WM_SETFOCUS, IntPtr.Zero, IntPtr.Zero);

            Win32Funcs.SetForegroundWindowWrapper(hWnd);
        }
Exemple #3
0
        /// <summary>
        /// 将窗口移出屏幕可见区域
        /// </summary>
        /// <param name="hWnd">窗口句柄</param>
        public static void SetWindowOutOfScreen(IntPtr hWnd)
        {
            //0, 1040, 147, 858
            Win32Types.Rect winRect;
            Win32Funcs.GetWindowRectWrapper(hWnd, out winRect);

            //0, 1024, 0, 672,ClientToScreen之后坐标为8,178
            Win32Types.Rect clientRect;
            Win32Funcs.GetClientRectWrapper(hWnd, out clientRect);

            var offset = winRect.Width - clientRect.Width;
            var x      = -winRect.Width + offset + 1;
            var y      = winRect.Top;

            const uint flags = Win32Consts.SWP_NOZORDER;

            Win32Funcs.SetWindowPosWrapper(hWnd, IntPtr.Zero, x, y, winRect.Width, winRect.Height, flags);
        }
Exemple #4
0
        public static void ShowTaskBar(bool show)
        {
            var cmd = show ? Win32Consts.SW_RESTORE : Win32Consts.SW_HIDE;

            //系统任务栏
            var handle = Win32Funcs.FindWindowWrapper("Shell_TrayWnd", null);

            if (!IntPtr.Zero.Equals(handle))
            {
                Win32Funcs.ShowWindowWrapper(handle, cmd);
            }

            //开始菜单栏按钮
            handle = Win32Funcs.FindWindowWrapper("Button", null);
            if (!IntPtr.Zero.Equals(handle))
            {
                Win32Funcs.ShowWindowWrapper(handle, cmd);
            }
        }
Exemple #5
0
        public static IntPtr GetProcessWnd(uint pid)
        {
            var ptrWnd = IntPtr.Zero;

            var ret = Win32Funcs.EnumWindowsWrapper((hWnd, lParam) =>
            {
                if (IntPtr.Zero.Equals(Win32Funcs.GetParentWrapper(hWnd)))
                {
                    int id;
                    Win32Funcs.GetWindowThreadProcessIdWrapper(hWnd, out id);
                    if (new IntPtr(id).Equals(lParam))
                    {
                        ptrWnd = hWnd;
                        Win32Funcs.SetLastErrorWrapper(0);
                        return(false);
                    }
                }

                return(true);
            }, new IntPtr(pid));

            return((!ret && Marshal.GetLastWin32Error() == 0) ? ptrWnd : IntPtr.Zero);
        }
Exemple #6
0
        /// <summary>
        /// 将窗口置底
        /// </summary>
        /// <param name="windowName">窗口名称</param>
        public static bool SetWindowBottom(string windowName)
        {
            var hWnd = Win32Funcs.FindWindowWrapper(null, windowName);

            return(!hWnd.Equals(IntPtr.Zero) && SetWindowBottom(hWnd));
        }
Exemple #7
0
 public static void RestoreWindow(IntPtr hWnd)
 {
     Win32Funcs.SendMessageWrapper(hWnd, Win32Consts.WM_SYSCOMMAND,
                                   new IntPtr(Win32Consts.SC_RESTORE), IntPtr.Zero); //还原
 }
Exemple #8
0
 public static void MaximizeWindow(IntPtr hWnd)
 {
     Win32Funcs.SendMessageWrapper(hWnd, Win32Consts.WM_SYSCOMMAND,
                                   new IntPtr(Win32Consts.SC_MAXIMIZE), IntPtr.Zero); //最大化
 }
Exemple #9
0
 /// <summary>
 /// 休眠
 /// </summary>
 public static void SetComputerHibernate()
 {
     Win32Funcs.SetSuspendStateWrapper(true, true, true);
 }
Exemple #10
0
 /// <summary>
 /// 睡眠
 /// </summary>
 public static void SetComputerSleep()
 {
     Win32Funcs.SetSuspendStateWrapper(false, true, true);
 }
Exemple #11
0
 /// <summary>
 /// 锁定
 /// </summary>
 public static void SetComputerLock()
 {
     Win32Funcs.LockWorkStationWrapper();
 }
Exemple #12
0
 /// <summary>
 /// 注销
 /// </summary>
 public static void SetComputerLogout()
 {
     Win32Funcs.ExitWindowsExWrapper(0, 0);
 }