2

どこから始めたらいいのかわからない。愚かな質問から始めましょう:

これにはどの言語を使用すればよいですか?手元のタスクに適しているものは何ですか?

次に、実際のもの:

カーソル位置を変更する以外に、スクリーンセーバーの起動を停止する方法はありますか?そうでない場合、カーソル位置の変更も機能しますか?

4

4 に答える 4

7

SetThreadExecutionStateは、ES_CONTINUOUSフラグとES_DISPLAY_REQUIREDフラグを渡すと、スクリーンセーバーがオンになったり、マシンが自動的にスリープ状態になったりするのを防ぎます。

于 2009-05-21T22:07:06.310 に答える
2

私は少し前にあなたが求めていることを正確に実行するアプリを書きました。タスクバーではなくシステムトレイのアイコンとして実行され、グローバルメッセージフックを使用して、WM_SYSCOMMAND/SC_SCREENSAVE通知がアプリケーションに到達しないようにします。その通知がDefWindowProc()関数に到達しない場合、スクリーンセーバーは実行されません。

于 2009-06-17T00:43:12.443 に答える
1
  1. プログラムをタスクバーに表示する必要はまったくありません。
  2. レジストリでスクリーンセーバーを無効にできれば、プログラムはまったく必要ありません。
  3. やりたいことは、 MOUSE_MOVEイベントをデスクトップウィンドウに送信することで実現できる可能性があります。C#(現在使用している唯一の言語)を使用する場合は、この記事を参照してください。ただし、WinAPIを使用する単純なCプログラムの方がこのタスクに適している可能性があります。
于 2009-05-21T22:01:19.333 に答える
0

.NETを使用すると、アプリケーションをシステムトレイに簡単に配置できます(System.Windows.Forms.ControlsのNotifyIconオブジェクトをチェックアウトしてください)。

SetCursorPos( http://msdn.microsoft.com/en-us/library/ms648394 (VS.85 ).aspx )API呼び出しを使用して、スクリーンセーバーを防ぐことができると思います。必ず、それらを現在の状態に設定してください。実際にマウスを動かさないように配置します。

于 2009-05-21T22:01:21.877 に答える