Hatena::Groupnadesiko

雪乃☆雫のなでしこ日和

2016/11/15 (火)

スクリーンセーバーにするよ!

| 16:48 | スクリーンセーバーにするよ! - 雪乃☆雫のなでしこ日和 を含むブックマーク はてなブックマーク - スクリーンセーバーにするよ! - 雪乃☆雫のなでしこ日和 スクリーンセーバーにするよ! - 雪乃☆雫のなでしこ日和 のブックマークコメント

 ・・・とゆうわけで、スクリーンセーバー

 スクリーンセーバーは、「/s」「/c」「/p」の三つの起動オプションで制御されていて、「/s」の時に、ふつーのスクリーンセーバーとして起動します。

 「/p」は、スクリーンセーバーの設定の中の、ちっちゃこいプレビュー画面を表示するためのもので、「/c」は、設定を押したら開くヤツだから、取りあえず無視することも可能。

 「/s」で起動する本体部分は、「枠なし」のフォームデスクトップいっぱいに表示して、マウスやキーのイベントで終わらすように設計すれば、OK。

#-----テスト用----------------------------------------------
//コマンドライン¥1は「/S」。
//コマンドライン言う。

#-----宣言--------------------------------------------------
OPとは文字列。        #起動オプション。

#-----------------------------------------------------------
#コマンドラインで取得した起動オプションで、動作を選択。
#-----------------------------------------------------------
OP=コマンドライン¥1の2文字左部分。  #起動オプション
もし、OP=「/p」または、OP=「/P」ならば、プレビュー。        #プレビュー(ミニ画面)
違えばもし、OP=「/c」または、OP=「/C」ならば、コンフィグ。    #コンフィグ(設定画面)
違えばもし、OP=「/s」または、OP=「/S」ならば、フルスクリーン。  #フルスクリーン(本体)
違えば終わる。
#-----------------------------------------------------------

*プレビュー
 終わる。

*コンフィグ
 終わる。

*フルスクリーン
  母艦について
    スタイルは「枠なし」
    クライアント幅はデスクトップW。
    クライアント高さはデスクトップH。
    位置は「{0},{0}」。
    キー押した時は~終わる。
    クリックした時は~終わる。
#-----------------------------------------------------------
#スクリーンセーバーの本体プログラム。
#-----------------------------------------------------------
  母艦デスクトップ色画面クリア。
  母艦の可視はオン
#-----------------------------------------------------------

 取りあえずこんな感じ?

 起動する場所によって、コマンドライン起動オプションが、大文字だったり小文字だったりするのはやめて欲しい・・・

 こにきづくまで、無駄に頭を悩ませてしまった(涙)

 でもこれで、本体部分を書き換えたら、それっぽく動くっぽい~♪


 だけど、ホントはスクリーンセーバーって、マウスクリックじゃなくって、マウスをチョコット動かしても復帰するものだよね。

 「マウス移動した時」のイベントがあるんだけど、これ終わるを設定すると、どんなにマウスを動かさないよう気をつけても、ってか、マウスには触れずに[F5]で起動させても、っこーで終了してしまうんだよね。

 どうやらこのイベントは、マウスの移動を検出するんじゃなくて、マウスがの部品の上にある中発生し続けているイベントらしい~。むむむ。

 ・・・いろいろ考えた結果、

#-----------------------------------------------------------
#宣言
初期マウスXとは整数=-1。初期マウスYとは整数=-1。
#-----------------------------------------------------------
#母艦について
    マウス移動した時は~
      もし、(初期マウスX=-1)かつ(初期マウスY=-1)ならば、
        初期マウスX=母艦のマウスX。初期マウスY=母艦のマウスY。
      違えば、(初期マウスX=母艦のマウスX)または
      (初期マウスY=母艦のマウスY)でなければ、終わる。
#-----------------------------------------------------------

 こうなった。

 画面の座標は、0,0から始まるので、しょっぱな変数の範囲外のマイナスの値を与えておけば、いっとう最初にイベントが呼ばれた時が分かるので、それにマウス位置の初期値を記憶し、2目以降からはの値と比較して、起動時とマウスの位置が変わったかを判定する。


 それから、マウスカーソルを消す術が、

http://www26.atwiki.jp/isoroku_be/pages/122.html

 ここにありました!

 いや~、世の中の賢い方々のおかげでWindowsAPIも使えて、ありがたや~。

 引用元を見ると、過去にもスクリーンセーバーを作りたい人がいたっぽいケド、もうリンクが切れてる(´・ω・`)


 だいたい、時はもう、スクリーンセーバーは流行らないよね。も液晶、焼き付かないし(爆)

 省エネで、スクリーンセーバーなんか表示するよか、画面暗くしたりスリープにしたりする時代だもね~。

 ワタシは、結構好きなのにさー。

トラックバック - http://nadesiko.g.hatena.ne.jp/snowdrops89/20161115