1

実行中にOSがスリープモードまたは休止モードに入らないようにする最も単純なバージョンのCプログラムをWindowsで使用したいと考えています。現在、私はこれを持っています:

#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によると、これは機能するはずです。

4

1 に答える 1

2

これはリンカー エラーです。 とリンクする必要がありますkernel32.lib。質問にリンクされているページから:

要件

サポートされる最小クライアント|Windows XP
サポートされる最小サーバー|Windows Server 2003
ヘッダー|Winbase.h (Windows.h を含む)
ライブラリ|Kernel32.lib <---------
DLL|Kernel32.dll
于 2012-07-17T10:39:53.927 に答える