想要在程序中使用电源管理的api启用休眠功能,就像windows命令powercfg /hibernate on所做的一样,哪位大侠知道的望不吝赐教,谢谢!

解决方案 »

  1.   

    多用搜索啊,CSDN上就有SetSuspendState()
      

  2.   

    如果你没有启用休眠功能,这个SetSuspendState()是没有用的。
      

  3.   

    直接调用命令行是可以做,研究了半天MSDN关于电源管理的api还是没有找到使用api方法有点心不甘
      

  4.   

    http://msdn.microsoft.com/en-us/library/aa373163(VS.85).aspx
      

  5.   

    http://www.windowskb.com/Uwe/Forum.aspx/windowsxp/169434/Disable-hibernatehttp://support.microsoft.com/kb/293399
      

  6.   

    int xiumian()
    {
    TOKEN_PRIVILEGES tp;
    HANDLE hToken;
    LUID luid;
    LPTSTR MachineName=NULL;
    InitPwrModule();
    BOOL fSuspend = FALSE;
    if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,
    &hToken ))
    {
    PERR("OpenProcessToken", GetLastError() );
    return 0;
    }
    if(!LookupPrivilegeValue(MachineName, SE_SHUTDOWN_NAME, &luid))
    {
    PERR("LookupPrivilegeValue", GetLastError() );
    return 0;
    }   
    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(fSuspend,TRUE);
    }