4

提案できる解決策の 1 つは、特別な「スクリーンセーバー」デスクトップを定期的に探し、存在する場合は実行中のスクリーンセーバーとしてカウントすることです。

ただし、一部のスクリーンセーバーでは、前述のデスクトップが常に存在するため、明らかにこれはすべてのスクリーンセーバーに当てはまるわけではありません。

これに対するより信頼できる解決策はありますか?

4

5 に答える 5

10

SPI_GETSCREENSAVERRUNNING パラメータを指定した WINAPI 関数 SystemParametersInfo() を参照してください。これは、スクリーン セーバーが現在実行されているかどうかを検出する唯一の文書化された方法です。(スクリーン セーバーが有効になっているかどうかを調べたり、タイムアウト値を取得および設定したり、この関数を使用してスクリーン セーバーを開始したりすることもできます。)

于 2009-02-06T20:16:59.463 に答える
2

重要なのは、ウィンドウクラス(「WindowsScreenSaverClass」)でスクリーンセーバーを識別することだと思います。このページを見つけました スクリーンセーバーを起動、検出、停止するにはどうすればよいですか?いくつかのコード例と説明があります。

于 2009-02-04T10:09:21.113 に答える
1

方法:VisualBasic6.0を使用してスクリーンセーバーが実行されているかどうかを確認する

これはVB6用であることは知っていますが、開始するのに適した場所になるはずです。

于 2009-02-04T10:01:23.720 に答える
-2

.MainModule.FileName に .scr を含むプロセスを検索します

于 2009-02-04T10:18:32.750 に答える