0

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 への直接呼び出しは行き止まりになる可能性があります。

4

3 に答える 3

2

Herman への私のコメントを確認してください。UPS SERVICE ではなく、UPS をシャットダウンしたいのですか? つまり、あなたはそれを止めたり、電源を落としたりしたいのですよね?

もしそうなら、あなたはそれを UPS by UPS モデルで探しています。そのうちの2つが同じように機能するとは思えません。

検索では、UPS の代わりに「APC」または「バッテリー」を試してください。コードの多くは、バッテリーなどに対処するためにラップトップで実行されるものだと思います...

ほこりっぽい古いファイルに隠された場所 APC UPS のプロトコル情報、それらが応答するコマンド、それらが PC に送信するものなどがあります。 SERIALケーブルを使用して... QmodemまたはHypertermを使用して実際にUPSと通信できます...

APCの人たちと話すことからそれを学びました。彼らはとても親切で、役に立ちます。最近では、Powerchute ソフトウェアからの URL を投稿するだけで、UPS と直接通信し、コマンドを実行できると思います。

于 2008-12-23T00:49:36.740 に答える
-1

それをしようとしている言語を教えてください....NETを使用している場合は、 ServiceController クラスでそれを行うことができます(ドキュメントを読んでください)。

C/C++、サービス関数 (Windows)を使用して Win32 API でサービスを制御する場合。

たとえば、サービスを停止するには、次のように ControlService 関数を使用できます (これは簡単で汚い例です)。

OpenService (hServMgr, TEXT("\\UPS_SERVICE_0"), SC_MANAGER_ALL_ACCESS);

SERVICE_STATUS stat;
ControlService (hUpsService, SERVICE_CONTROL_STOP, &stat)

hServMgr で Service Manager ハンドルを提供する必要があることに注意してください。\\UPS_SERVICE_0 という名前は、目的の UPS サービス (Windows 組み込みまたは別のもの) と一致する必要がある名前です。

サービスを停止するには、適切なセキュリティ権限が必要であることを忘れないでください。これは管理者アカウントの問題ではありませんが、管理者以外のアカウントでログインするとどうなるかを覚えておいてください。

それが役立つことを願っています。

物理的な UPS デバイスのシャットダウンについては、WIN98 の頃、COM ポートを介して UPS と通信しているデバイスの電源を切ることができたのを覚えていますが、ブランドやプログラミング インターフェイスがどのようなものだったかは覚えていません。

于 2008-12-23T00:33:05.620 に答える