/// <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); }
/// <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); }
/// <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); }
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); } }
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); }
/// <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)); }
public static void RestoreWindow(IntPtr hWnd) { Win32Funcs.SendMessageWrapper(hWnd, Win32Consts.WM_SYSCOMMAND, new IntPtr(Win32Consts.SC_RESTORE), IntPtr.Zero); //还原 }
public static void MaximizeWindow(IntPtr hWnd) { Win32Funcs.SendMessageWrapper(hWnd, Win32Consts.WM_SYSCOMMAND, new IntPtr(Win32Consts.SC_MAXIMIZE), IntPtr.Zero); //最大化 }
/// <summary> /// 休眠 /// </summary> public static void SetComputerHibernate() { Win32Funcs.SetSuspendStateWrapper(true, true, true); }
/// <summary> /// 睡眠 /// </summary> public static void SetComputerSleep() { Win32Funcs.SetSuspendStateWrapper(false, true, true); }
/// <summary> /// 锁定 /// </summary> public static void SetComputerLock() { Win32Funcs.LockWorkStationWrapper(); }
/// <summary> /// 注销 /// </summary> public static void SetComputerLogout() { Win32Funcs.ExitWindowsExWrapper(0, 0); }