zoukankan      html  css  js  c++  java
  • C实现关机

    说明:下面文章都是居于杨中科的C语言可以干大事系列视频的。用C写一些小的桌面应用程序。主要是锻炼编程的思维。

    .在Windows2000一下的操作系统版本,直接就可以调用Windows自带的API,即系统关机函数。BOOL ExitWindowsEx(UINT uFlags,DWORD dwReason);uFlags的值:
    EWX_LOGOFF,0,注销
    EWX_SHUTDOWN,1,关机
    EWX_REBOOT,2,重启
    EWX_POWEROFF,8,断开电源
    EWX_FORCE,4,强制终止所有程序
    EWX_FORCEIFHUNG,16,强制终止位响应的程序

    后面的dwReason一般不指定,可能是历史遗留的问题吧。我们在使用的时候直接将其置为 0就ok了。

    2.但是在Windows2000以上包括Windows2000的系统,如果只是点用此函数,只能实现注销的功能,其余的功能还需要在程序中写代码来获取相应的权限:在Main_OnInitDialog函数中,即窗口初始化的时候取得相应的关机权限,代码如下:

    我将其抽象为一个函数吧GetPrivilege()

    {

          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; 

    // Shut down the system and force all applications to close.

    //
        // Add initializing code here
        //

    }

    由于本人水平有限,错误很多,请各位大侠热心赐教,谢谢!可以给我留言。


    作者:GY小小鸟
             
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    NumPy 字符串函数
    NumPy 位运算
    Numpy 数组操作
    最小二乘法的原理与计算
    NumPy 迭代数组
    Making AJAX Applications Crawlable
    mac, start sublime from terminal
    Speed Up Your WordPress Site
    To Support High-Density Retina Displays
    HTML5 tricks for mobile
  • 原文地址:https://www.cnblogs.com/YangFengHui/p/CLanguage.html
Copyright © 2011-2022 走看看