アプリケーションからスクリーンセーバーを禁止するには、Timerイベントの中で以下のコードを記述する事で可能でしたが、Windows10では禁止出来なくなっていました。
// スクリーンセーバーの起動の禁止
POINT pos;
::GetCursorPos(&pos);
::SetCursorPos( pos.x, pos.y );
}
様々な情報を調査した結果、SetThreadExecutionStatea関数を利用することでスクリーンセーバの起動を防ぐことが可能であることがわかりました。以下に、アプリケーションからスクリーンセーバの起動を禁止する方法を説明します。
SetThreadExecutionStatea関数を使用したスクリーンセーバーの禁止
以下の様に、Timerイベントの中からSetThreadExecutionStatea関数を定期的に呼ぶ事で、スクリーンセーバーを禁止する事か可能でした。
void __fastcall TSDIAppForm::Timer1Timer(TObject *Sender)
{
// スクリーンセーバーの起動の禁止
SetThreadExecutionState(ES_DISPLAY_REQUIRED);
}
SetThreadExecutionState関数のヘルプ
SetThreadExecutionState関数のヘルプです。
SetThreadExecutionState 関数 (winbase.h) - Win32 apps
アプリケーションが使用中であることをシステムに通知し、アプリケーションの実行中にシステムがスリープ状態に入ったり、ディスプレイをオフにしたりできないようにすることができます。
参考URL
以下のURLも参照ください。