HSP3 プログラミングの基礎X
前へ 目次へ 次へ 

(3) スクリーンセーバー

 CRTディスプレイの場合、同じ位置に同じ文字や画像を長時間表示させておくと、その部分が焼きつけを起こす。焼きつけとは、ディスプレイの電源を切ってもその文字や画像が薄く表示されたままの状態になる現象である。
 この現象を防止するためのソフトウェアがスクリーンセーバー(Screen Saver)と呼ばれるものである。一定時間が経過したらディスプレイを真っ黒にする、または、簡単なアニメーションを表示する。何かキーを押すかマウスを動かすとスクリーンセーバーは終了して、元の表示に戻る。
 ここでは、HSP3とWindows XPの組み合わせで説明していく。


◎ 仕組みと登録

 コントロールパネルの画面、または、デスクトップで右クリックメニューから[プロパティ(R)]を選択すると画面のプロパティ のダイアログ(図参照)が表示される。

 ※1 スクリーンセーバーのプログラムを設定する。
 ※2 スクリーンセーバーのパラメータを設定するダイアログを表示する。
 ※3 スクリーンセーバーを試しに起動する。
 ※4 スクリーンセーバーから復帰するとき、パスワード入力が必要にする。

 この画面のプロパティのダイアログで設定したスクリーンセーバーのプログラムが設定時間後に起動される。このとき、コマンドラインのパラメータとして、"/S"が設定されて起動される。また、[設定(T)]ボタン(※2)をクリックするとスクリーンセーバーがパラメータ"/C"付きで起動される。ディスプレイの絵の中に表示するプログラムとして起動されるときはパラメータ"/P"付きで起動される。このディスプレイの絵の中がプレビューであるので、「プレビュー画面」ということにする。したがって、[プレビュー(V)]ボタン(※3)はスクリーンセーバーを試しに起動するボタンなので、クリックするとパラメータ"/P"付きで起動される。

動作 パラメータ  スクリーンセーバーのプログラムは一つだけで、起動時に指定するパラメータによって動作が変わるようにプログラミングする。
 例えば、スクリーンセーバーのプログラムを"ssaver"とすると、
 ○ スクリーンセーバー起動は、 ssaver  /S
 ○ [設定(T)]ボタンは、 ssaver  /C
 ○ ディスプレイの絵の中のプレビューは、 ssaver  /P
として起動される。
スクリーンセーバー起動
[プレビュー(V)]ボタン
/S
[設定(T)]ボタン /C
ディスプレイの絵の中
(プレビュー画面)
/P


サンプル(ssaver01.hsp)
 パラメータを取得して表示する。

;ssaver01.hsp
#packopt name "screensaver"  ;実行ファイル名
#packopt type 2              ;スクリーンセーバー
    mes dir_cmdline    ;パラメータ取得
    stop

実行ウィンドウが表示される。起動オプションを設定しなければ何も表示されない。
 起動オプションはHSPスクリプトエディタのメニューバーから[HSP(P)] → [起動オプション(O)...]で設定する。ここでは、設定する必要はない。

 スクリーンセーバーの実行ファイル名は「ssaver」として作成する。2, 3行目の#packoptで実行ファイル作成時の設定をしている。

○ スクリーンセーバー登録

 次に、このサンプルからスクリーンセーバー(実行ファイル)を作成する。メニューバーから次のように選択する。

[HSP(P)] → [実行ファイル自動作成(A)]

 マイコンピュータやエクスプローラで、作成された実行ファイルssaverを右クリックしてメニューから[インストール]を選択すると画面のプロパティ のダイアログが表示される。[OK]ボタンをクリックするとスクリーンセーバーとして登録される。

 マイ コンピュータやエクスプローラでファイルの一覧を表示させてもファイル名だけで、拡張子が表示されないように設定されている場合がある。拡張子も表示するように設定するには、メニューバーから次のように選択して設定のダイアログを表示する。
[ツール(T)] → [フォルダ オプション(O)...]
 フォルダ オプションのダイアログの詳細設定で、「□ 登録されている拡張子は表示しない」のチェックをはずして[OK]ボタンをクリックする。これで拡張子も表示されるようになる。


 画面のプロパティ のダイアログでプレビュー画面に「/p 132974」と表示される(図参照)。数字は変わるかもしれない。

 このプレビュー画面に表示されるのが起動時に付けられるパラメータである。

 [設定(T)]ボタンをクリックすると、ウィンドウが表示され、「/c:853960」のようにパラメータが表示される。

 [プレビュー(V)]ボタンをクリックすると、ウィンドウが表示され、「/s」とパラメータが表示される。
 待ち時間を1分に設定して、[OK]または[適用(A)]ボタンをクリックする。1分後にはウィンドウが表示され、「/s」とパラメータが表示される。
 これらのウィンドウは、[×](閉じる)ボタンで閉じる。



プログラムの基本形

サンプル(ssaver02.hsp)
 パラメータによって処理内容を変える。

;ssaver02.hsp
#packopt name "screensaver"  ;実行ファイル名
#packopt type 2              ;スクリーンセーバー
    randomize
    para = dir_cmdline    ;パラメータ取得
    para = strmid(para, 0, 2)
    if para = "/p" | para = "/P" : goto *preview    ;プレビュー
    if para = "/s" | para = "/S" : goto *ssaver     ;フルスクリーン
    if para = "/c" | para = "/C" : goto *config     ;コンフィグ
    dialog "無効なオプションです。" + "[" + para + "]"
    end
*config
    mes "CONFIG"
    stop
*preview
    mes "PREVIEW"
    stop
*ssaver
    repeat
        pos rnd(600), rnd(450)
        mes "SCREEN SAVER"
        await 500
    loop
    end

実行 実行ファイルを作成して、画面のプロパティ のダイアログで動作を確認する。
プレビュー画面には「PREVIEW」、[設定(T)]ボタンをクリックすると「CONFIG」、[プレビュー(V)]ボタンをクリックすると「SCREEN SAVER」と表示される。

 [プレビュー(V)]ボタンをクリックして、しばらく(20〜30秒後)してからキーボードやマウスを使うと自動的にスクリーンセーバーは終了する。したがって、スクリーンセーバーを終了させるための特別な処理は必要ない。
 前のサンプルで確認したようにパラメータには数字がついているので、strmid関数で最初の2文字だけを変数paraに格納している。
 パラメータの文字によってgoto命令で移動先を変えて処理の内容を変える。


前へ 目次へ 次へ 
2007  © Hiroshi Masuda 

 

 

inserted by FC2 system