VC++实现电脑睡眠/休眠/锁定/关闭屏幕 您所在的位置:网站首页 windows关闭屏幕并锁定计算机 VC++实现电脑睡眠/休眠/锁定/关闭屏幕

VC++实现电脑睡眠/休眠/锁定/关闭屏幕

2024-06-08 23:28| 来源: 网络整理| 查看: 265

实现休眠/睡眠,调用进程必须具有 SE_SHUTDOWN_NAME 特权 获取特权

HANDLE hToken; TOKEN_PRIVILEGES tp; LUID luid; if(::OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken)) { ::LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&luid); tp.PrivilegeCount=1; tp.Privileges[0].Luid =luid; tp.Privileges[0].Attributes =SE_PRIVILEGE_ENABLED; ::AdjustTokenPrivileges(hToken,false,&tp,sizeof(TOKEN_PRIVILEGES),NULL,NULL); }

使用SetSystemPowerState函数实现睡眠/休眠

BOOL SetSystemPowerState( [in] BOOL fSuspend, [in] BOOL fForce ); 参数 [in] fSuspend 如果此参数为 TRUE,系统会挂起。 如果参数为 FALSE,则系统休眠。 [in] fForce 此参数不起作用。 返回值 如果电源已挂起并随后还原,则返回值为非零值。 如果系统未挂起,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。

头文件:winbase.h (包括 Windows.h) Library: Kernel32.lib DLL: Kernel32.dll

#include #pragma comment(lib, "Kernel32.lib")

为 Windows Vista 和更高版本编写的应用程序应改用 SetSuspendState

BOOLEAN SetSuspendState( [in] BOOLEAN bHibernate, [in] BOOLEAN bForce, [in] BOOLEAN bWakeupEventsDisabled ); 参数 [in] bHibernate 如果此参数为 TRUE,则系统休眠。 如果参数为 FALSE,系统会挂起。 [in] bForce 此参数不起作用。 [in] bWakeupEventsDisabled 如果此参数为 TRUE,系统将禁用所有唤醒事件。 如果参数为 FALSE,则保持启用任何系统唤醒事件。 返回值 如果该函数成功,则返回值为非零值。 如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError

头文件: powrprof.h Library: PowrProf.lib DLL: PowrProf.dll

#include "powrprof.h" #pragma comment(lib, "PowrProf.lib")

锁定屏幕

BOOL LockWorkStation(); 返回值 如果该函数成功,则返回值为非零值。 由于函数异步执行,因此非零返回值指示操作已启动。 它不指示工作站是否已成功锁定。 如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。 最低受支持的客户端 Windows XP [桌面应用|UWP 应用] 最低受支持的服务器 Windows Server 2003 [桌面应用|UWP 应用] 目标平台 Windows 标头 winuser.h (包括 Windows.h) Library User32.lib DLL User32.dll API 集 ext-ms-win-ntuser-misc-l1-5-1 (在 Windows 10 版本 10.0.14393)

代码示例

#include #include #pragma comment( lib, "user32.lib" ) void main() { // Lock the workstation. if( !LockWorkStation() ) printf ("LockWorkStation failed with %d\n", GetLastError()); }

关闭屏幕

PostMessage(HWND_BROADCAST,WM_SYSCOMMAND,SC_MONITORPOWER,2);

或者

::SendMessage(::GetDesktopWindow(),WM_SYSCOMMAND,SC_MONITORPOWER,2);


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有