⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shutdown.h

📁 使用c语言编写的关机程序。希望大家多多下载
💻 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 + -