4


2

私は24時間放置されているPC上で実行する必要があるWindowsサービスを持っています。

それは約3500のサイトにインストールされている何かであり、スリープ/シャットダウンが無効になっていないことを意味するかもしれないので、私はスリープ/シャットダウンを無効にしてPCに頼ることはできません。

Windowsがスヌーズしないようにするための、.NETをきれいにする方法はありますか。

それとも、ファイルに定期的に書き込む(たとえば、1分に1回日付を書き込む)だけで十分でしょうか。

「そのようなことを強要してはいけません。コンピュータに任せてください」と答える、横方向や悪い慣習を警告しないでください。 このプログラムが顧客のコンピュータでこれを確実に達成するようにするのが私の仕事です。

乾杯!

編集:

{空} [大ため息]

いつものように、ラテラルはコメントする以外に仕方がありません。 私は自分自身を正当化できないようにすることを避けようとしましたがねえ。 うまくいきませんでした。 人々は私が "THEIR"コンピュータを引き継ごうとしていると思った。

これは企業のお客様向けであり、セキュリティハードウェア上のアクションを監視して記録します。 誰かが電子キーでドアを開けるのと同じです。

ドアは1日24時間機能している必要があるので、彼らは明らかに1日24時間ログに記録することを望んでいます。

犯罪ではありません。 彼らはこれを実現したいサイトをたくさん持っています。 彼らは休止状態/睡眠機能をオフにしているスタッフに頼ることはできません。 それで彼らはそれが生き続けることができることを確認するよう私に頼みました。

繰り返しますが、それは本当に犯罪ではありません。 時々これらのことはただ起こらなければならない。

私がここで尋ねるあらゆる質問を正当化しなければならないのは嫌いです。 現実の世界は、私たち全員がそれを望んでいるほど綺麗でふわふわしているわけではありません。

*もっと前向きなことに、助けてくれた人たちに感謝します!! *

3 Answer


3


はいあります! 他のアプリケーションがこれを行っているので(例えばCyber​​linkのPower DVDを見てください)、APIはそこにあります。

http://msdn.microsoft.com/en-us/library/aa372422%28VS.85%29.aspx[Windowsの電源管理API]について読み始めることをお勧めします。 ただし、.NETがこれらのAPIのマネージ実装を提供しているとは思わないので、この場合はP \ Invokeを使用する必要があります。

特に、電源状態の変更を通知するためにサービスを登録する機能があるようです。 私はあなたのサービスが特定の電源状態の変更をキャンセルするように要求する方法があるかもしれないと仮定しています(スリープ状態に入るなど)。

それからあなたはまたこれらの 電源管理機能を見るべきです。

そして最後の手段として - そしてそれでもなおハッキーなこととして - あなたはあなたのサービスにユーザーの行動をシミュレートするために定期的にキープレスを生成させそしてシステムに送信させることができる。

  • 注意 **

これをもう少し考えた後、私が採用するアプローチは、コンピュータをスリープ状態や休止状態にならないように設定するPower Management ProfileをWindowsで作成することであることを指摘したいと思います。 次に、アプリケーション/サービスから(上記のAPIを使用して)アクティブな電源状態プロファイルを監視し、それが変更された場合はプログラムでそれを元に戻します。 これは、ポリシーを実施するための非常にきれいな方法です。 PowerSetActiveSchemeを参照してください。


3


http://msdn.microsoft.com/en-us/library/aa373208.aspx[SetThreadExecutionState] APIをご覧ください。 アプリケーションがアクティブであることをシステムに通知し、コンピュータがスリープ状態にならないようにすることができます。


1


私たちの緊急通話処理システムには、何年も前に似たような(しかし逆の)問題がありました。 私は、SendInputを使ってプログラム的にマウスを1ピクセルずつ動かしてから元に戻すことが最善の方法であることを見つけました。 コードはSendInputでMOUSEEVENTF_MOVEを使用しました。 これは.Netではなくネイティブコードですが、どこかに探し始めることができます。