UPS サービスを使用して、アプリケーションから UPS の状態を監視しています。HKLM\SYSTEM\CCS\Services\UPS\Status のキーには、電源コントロール パネルから取得できるすべての情報が含まれています。しかし -- アプリからも UPS にシャットダウンするように指示できるようにしたいと考えています。サービスがUPSにシャットダウンするように指示できることは知っています-たとえば、バッテリーで設定された分数を実行した後-そして、手動でシャットダウンを開始するためにサービスに送信できるコマンドがあるかどうか疑問に思っています.
私はこの情報を探すのに苦労しています -- 人々は "Uninterruptible" のつづりを間違える傾向があり (Firefox には赤線が引かれていますが、代替手段はありません)、"UPS" は配送サービスのためにヒットするだけです。System.ServiceController または WMI を介して何かできるのではないでしょうか?
明確化: はい、物理的な UPS デバイスの電源を切ることについて話しているのです。サービスを停止する方法を知っています。これはよくある問題だと思いました。UPS を PC と一緒にオフにしたいのです。このページに基づいて、試してみるアイデアがありました。ご覧のとおり、APC (および他のすべてのユーザー) は、UPS サービスが呼び出す DLL を提供する必要があります。関数呼び出しは十分に文書化されているため、それらを P/Invoke できない理由はありません。うまくいったかどうかがわかったら、これを再編集します。
更新: UPSInit を呼び出してから UPSTurnOff を呼び出してみましたが、何も起こりません。もう少しいじりますが、apcups.dll への直接呼び出しは行き止まりになる可能性があります。