エクスプロラーで、scrファイル(スクリーンセーバ)にカーソルを合わせて 右クリックすると出てくるメニューの中に「設定」とか 「インストール」とかがあります。これを“Pyxis”の中でやるには、 例えば、"scr"の「拡張子対応設定」に於いて、以下のようにする方法も あります。

【「設定」をまねる】


【「インストール」をまねる】


(オプションが見にくいかもしれませんね。オプションは、
desk.cpl,InstallScreenSaverです。)


一応、Windowsの設定(「フォルダオプション」−「ファイルの種類」)では、 上記のようになっています。


しかし、これだと、オンラインで配布されているスクリーンセーバの一部に 「設定ダイアログ」が開かずに、スクリーンセーバ自体が起動してしまうもの が有りました。ちなみに、そのスクリーンセーバーについて、「実行コマンド 入力」で、 "(スクリーンセーバーのフルパス名) /c" とやってみる と、「設定ダイアログ」が開きます。そこで、やや大げさになりますが、スク リプトを使う方法も考えてみました。あくまで、 一つの例ですが、

"C:\Script"の中に、以下のようなスクリプトファ イル、"scr_c.vbs"を作ったとして、

***** scr_c.vbs *****

'////////////////////////////////////////////////////////////////////
'//
'//     スクリーンセーバ設定ダイアログを開くためのスクリプト
'//
Dim args, objWshShell

'Argumentオブジェクトを使用
'スクリーンセーバーのパスを受け取る
Set args = Wscript.Arguments

'WshShellオブジェクトを使用
Set objWshShell = Wscript.CreateObject("Wscript.Shell")
'スクリーンセーバーを"/c"オプション付きで起動
objWshShell.Exec(args.item(0) & " /c")

"scr"の拡張子対応設定で、

【「設定」をまねる(スクリプト使用)】


とします。

これで私が試した範囲では、全部、設定ダイアログが開きました。
つまり、スクリーンセーバをシステムフォルダにコピーして、「画面のプロパ ティ」を通さなくても、適当な作業用フォルダで解凍して、どんな設定がある か見てみたり、いろいろ設定を変えてテストしてみたりできるわけです。


だいぶ話が長くなってしまいましたが、おまけにもう一つ、

上の「インストール」というのを実行しても、別にscrファイルがシステム フォルダにコピーされるわけではありません。そういう意味では、「イン ストール」という表現は、誤解を招きやすいかもしれません。
そこで、「システムフォルダにコピーして、スクリーンセーバに設定」、というふうにしてみます。

例えば、"C:\Script"の中に、下のような "scrInst.vbs"というのを作って、

***** scrInst.vbs *****

'////////////////////////////////////////////////////////////////////
'//
'//     スクリーンセーバをインストール
'//                                                 2004年11月21日 改
Option Explicit
Dim args, objFS, objFolder, objWshShell
Dim ext, sysPath, myName

'Argumentオブジェクトを使用
'スクリーンセーバのパスを受け取る
Set args = Wscript.Arguments

'ファイルシステムオブジェクトを使用
Set objFS = CreateObject("Scripting.FileSystemObject")
'拡張子を取得
ext = objFS.GetExtensionName(args.item(0))

'受け取ったパスがスクリーンセーバでなければ終了
If LCase(ext) = "scr" then
Else
    MsgBox "指定されたファイルは、スクリーンセーバではありません。"
    WScript.Quit
End If

'システムフォルダを取得
Set objFolder = objFS.GetSpecialFolder(1)
sysPath = objFolder.Path & "\"

'スクリーンセーバをシステムフォルダにコピー
objFS.CopyFile args.Item(0),sysPath

'スクリーンセーバのファイル名を取得
myName = objFS.GetFileName(args.Item(0))

'objWshShellオブジェクトを使用
Set objWshShell = CreateObject("Wscript.Shell")
'スクリーンセーバをインストール(設定)
objWshShell.Run "C:\WINDOWS\rundll32.exe desk.cpl,InstallScreenSaver "_
     & sysPath & myName


"scr"の拡張子対応設定で、

【「インストール」をまねる(スクリプト使用)】


以上です。


戻る