Windows:防止睡眠模式 – C中的最小版本

我想在Windows下有一个最简单的C程序版本,它可以防止操作系统在运行时进入睡眠模式或hibernate模式。 目前我有这个:

#include <windows.h> int main(int argc, char **argv) { while (1) { SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED); Sleep(300*1000); /* wait 300 seconds */ } return 0; } 

但是,这是行不通的 – 如果我尝试用Orwell Dev-C ++ 5.2.0.3编译这个,我得到这个错误:

[链接器错误] C:\ Users \ bachmann \ AppData \ Local \ Temp \ ccD8l1tp.o:disable_sleep.c 🙁 .text + 0x1e):未定义对SetThreadExecutionState的引用collect2:ld返回1退出状态

那么怎么了? 据MSDN ,这应该工作,我认为。

这是一个链接器错误:你需要链接到kernel32.lib 。 从问题中链接的页面:

要求

最低支持的客户端| Windows XP
最小支持的服务器| Windows server 2003
头文件| Winbase.h(包括Windows.h)
库| coreel32.lib <---------
 DLL |的coreel32.dll