C:如何检查电脑是否locking/睡眠?

C中是否有任何函数来检查计算机是否正在sleephibernatelocked并从这些状态中唤醒?

在msdn中,它们提供了C#C++但不提供给C 我的操作系统是Windows7

下面是我正在使用的代码来检查启动程序和终止之间的时间间隔(closures系统将终止程序,这样可以测量这种方式的持续时间)。

 #include <stdio.h> #include <stdlib.h> #include <conio.h> #include<time.h> clock_t start_time=0; void bye (void) { FILE *read,*write; write=fopen("F:\\count.txt","w"); clock_t end_time=clock(); fprintf(write,"Time: %d",(end_time-start_time)/CLOCKS_PER_SEC); fclose(write); } int main (void) { start_time=clock(); atexit (bye); //exit (EXIT_SUCCESS); getch(); } 

以同样的方式,我想检查locking/睡眠/hibernate。

一种可能的方式,就像@ddriver所提到的那样在c中包装c ++代码(在链接中提供)

但是在C中根本不可能?

WinAPI至少具有与.NET框架相同的可能性。 你要求的是PowerManagement API 。

您必须注册才能使用RegisterPowerSettingNotification函数接收PowerSettingNotificationEvents。 不幸的是,对于一个GUI应用程序来说,它的使用方式是不同的,在这个GUI应用程序中,每当系统即将改变状态(挂起模式或休眠模式之一)时,给出一个窗口的句柄,然后该窗口将接收WM_POWERBROADCAST消息, GUI(通常是一个服务),注册一个HandlerEx回调函数,参数为SERVICE_CONTROL_POWEREVENT,dwEventType为PBT_POWERSETTINGCHANGE。

您提供的链接是关于电源模式改变时发出的信号。 所以,显然,你可以检查系统何时要睡觉,或者刚醒来。

至于检查系统是否处于睡眠状态,这是不可能的,因为用户代码在深度睡眠状态下不会运行。 也许一些特定于平台的,非常低级别的BIOS API,但这些通常不公开,而且远不是便携式的。