1

したがって、Windows スクリーンセーバーは、3 つのパラメーターのいずれかが渡される単なる exe です。

/c for config screen
/s for fullscreen
/p <hwnd> for the little preview window. 

複数の処理を実行していることを除いて、すべてがうまく機能しています(これが問題です)。

Windows スクリーンセーバー ピッカー ウィンドウを開いて自分のスクリーンセーバーを選択すると、プレビューを表示できるように /p で起動します。設定ボタンをクリックすると、/c で私の sreensaver が再度呼び出されます。現在、2 つの処理が実行されています。ダイアログを閉じるとプロセスは終了しますが、Windows は /p でスクリーンセーバーを再度呼び出すようになりました。プロセスは積み重なっていきます。

この問題をどのように処理すればよいですか? この件に関するドキュメントはありません。誰かが以前にこれを行ったことがあることを願っています。

他のプロセスを監視して、1 つだけを実行し続けたくありません。私が見ていない解決策がなければなりません。

ありがとう

さらに調査した結果、Windows がメッセージをスクリーンセーバーに渡すことがわかりました: http://msdn.microsoft.com/en-us/library/cc144066%28v=vs.85%29.aspx

メッセージをキャッチするフィルターを設定しました。私はすべてを手に入れていますが、破壊しています。笑。保釈するように伝えるために WM_DESTROY を渡すと思います。

4

2 に答える 2

1

私は自分の質問に答えたことがわかりました。上記の msdn リンクを参照してください。メッセージを監視する必要があり、WM_DESTROY でプロセスを強制終了します。– HCHogan が編集中

于 2012-08-30T19:39:16.880 に答える
0

引数を見てプレビューモードで実行されているかどうかを確認してから、回避しようとしていることを何もしないようにコードを変更してみませんか。

または、HWNDをレジストリに保存し、それを使用して、スクリーンセーバーが正常に起動したときにプレビューがまだ実行されているかどうかを確認します

于 2012-08-30T18:56:21.917 に答える