えっと、スクリーンセーバー実行中でも最前面表示するソフトを作りたいんです。
考えてみた結果、それには通常時はPaintイベントで、
スクリーンセーバー実行開始時にも最前面のAPIをつかえばいいんですね、
でも、肝心のスクリーンセーバーの実行を取得する方法がわかりません。
独立のAPIなら探しようもありますけど、
ほかのスクリーンセーバー関係のはSendMessageを使ってるので、
たぶんこれもそうだと思うんです。
能書きが長くなりました^^;
スクリーンセーバーの実行を知るには、
SendMessageの引数(もしくは独立したAPI?)に何をいれればいいんでしょう?
参考までに
スクリーンセーバーが実行中かどうかを得る
(新山(へろぱ)のホームページ)
http://plaza5.mbn.or.jp/~heropa/vb34.htm
あ、ほんとだ^^;
そんなになくてはならないものでもないので、
これでいいかなと思います^^;
でもこのAPIって、なにかまだ使い道ありそうですねぇ…。
ちょっと調べてみようかな…。
ありがとうございました♪
解決して今せんでした^^;
へろぱ氏が述べられているように、
プロセスを列挙し、拡張子が.scrであるものを
さがす、というのが一番汎用的な方法です。
プロセス列挙に関しては、Galliverの
「MSDNの羅針盤」 に参考記事があります。
http://www.galliver.co.jp/writing/msdn/msdn15/
うーんと、スクリーンセーバー状態取得が成功したか…。
よくわかりませんけど^^;
(スクリーンセーバー実行中にはデバッグできないんですもの…)
強力最前面表示できなかったので…。
Fileにログとって、あとでチェックしたらどうです?
なんで今まで気がつかなかったんでしょう^^;
そうですね。
ちゃんとするときは起動してるみたいです。
で、スクリーンセーバーでも手前はしました。
でも、プレビュー表示でやってはだめだったんですねぇ…。
スクリーンセーバーが動いているかどうかが問題ではなく、あるWINDOWを
最前面に表示できればいいっていう考え方もできますよね。
ただ、スクリーンセーバーにパスワードがかかっている場合はこの方法で
はダメだと思いますが、そうでなければ、APIのSetCursorPosを使ってマ
ウスカーソルを動かしてやればスクリーンセーバーから抜けられると思う
ので、それでWINDOWを表示してやるというのはどうでしょうか。
それだとスクリーンセーバー愛好家から文句がきそうですね^^;
とりあえず、Windows95では正常動作しないでしょうけど、今のままでいいです。
ツイート | ![]() |