📄 shutdown.h
字号:
#ifndef SHUTDOWN_H
#define SHUTDOWN_H
BOOL Closecomputer(int kind)
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
// Get a token for this process.
if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken))
return FALSE;
// Get the LUID for the shutdown privilege.
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
// Get the shutdown privilege for this process.
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
if (GetLastError() != ERROR_SUCCESS)
return FALSE;
switch(kind)
{
case 1:
ExitWindowsEx(EWX_FORCE|EWX_REBOOT,0);
break; //重启
case 2:
ExitWindowsEx(EWX_FORCE|EWX_SHUTDOWN,0);
break; //关机
case 3:
ExitWindowsEx(EWX_FORCE|EWX_LOGOFF,0);
break; //注销
case 4:
SetSystemPowerState(FALSE, TRUE);
break; //休眠
case 5:
SetSystemPowerState(TRUE, TRUE);
break; //待机
case 6:
{
HMODULE hUser32dll;
PROC MyLockWorkStation;
hUser32dll=GetModuleHandle("user32.dll");
MyLockWorkStation=GetProcAddress(hUser32dll,"LockWorkStation");
if(MyLockWorkStation)
MyLockWorkStation();
}
break; //锁定
default:
break;
}
return TRUE;
}
BOOL InitiateClosecomputer(int kind, DWORD dwTimeout)
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken))
return FALSE;
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
if (GetLastError() != ERROR_SUCCESS)
return FALSE;
switch(kind)
{
case 1:
InitiateSystemShutdown( NULL, "WINDOWS will shutdown in above time !", dwTimeout,TRUE, FALSE);//关机
break;
case 2:
{
InitiateSystemShutdown( NULL, "WINDOWS will shutdown in above time !", dwTimeout,TRUE, TRUE);//重启
}
break;
default:
{ printf("InitiateSystemShutdown failed.");}
break;
}
return TRUE;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -