我在MSDN上看WindowsEx的说明,可是都是英文,看不懂,只好请各位高手帮忙了,给说一下各参数的作用行吗?
还有,我想做一个程序,让系统重新启动,不知道参数应该怎么样搭配呢?

解决方案 »

  1.   

    ExitWindowsEx VB声明 
    Declare Function ExitWindowsEx Lib "user32" Alias "ExitWindowsEx" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long 
    说明 
    退出windows,并用特定的选项重新启动 
    返回值 
    Long,非零表示成功,零表示失败。会设置GetLastError 
    参数表 
    参数 类型及说明 
    uFlags Long,指定下述一个或多个标志(用OR运算符合并到一起) 
    EWX_FORCE 强迫中止没有响应的进程 
    EWX_LOGOFF 中止进程,然后注销 
    EWX_SHUTDOWN 关掉系统电源(如果可能的话,ATX电源就可以) 
    EWX_REBOOT 重新引导系统 
    EWX_SHUTDOWN 关闭系统 
    dwReserved Long,保留,设为零 
    注解 
    这个函数调用后会立刻返回,系统关闭过程是在后台进行的。注意先中止自己的应用程序,使关闭过程更显平顺。当然,您的进程必须有足够的优先权,否则也不能执行这种操作 
      

  2.   


    好像  后面版本的 windows ,这个不起作用了要的到控制权利
      

  3.   

    AdjustTokenPrivileges获得权限HANDLE hToken;  
    TOKEN_PRIVILEGES tkp; 
    if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) MessageBox("OpenProcessToken failed!");

    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)  
    MessageBox("AdjustTokenPrivileges enable failed!");
    if (!ExitWindowsEx(EWX_REBOOT, 0))  
    MessageBox("ExitWindowsEx failed!");