WEB上のソースを利用する(1) では、まず「ライブラリ(実際は関数)」を WEB 上に置いて ローカルから呼び出して利用するものでしたが、今回は、実行する側のスクリプトも WEB上 に置いて使用します。 実際問題、WEB 上に置いても、ダウンロードしてから実行するのであればさほど考える 必要の無い事柄ですが( ただアップロードしておけば良いので )、 自分の WEB サイトに置くという事になると話は別です。 Windows では、アプリケーションをダウンロードしてハードディスクに保存しなくても、 「そのまま実行する」という方法があります。もちろん、自分の作ったものだから信頼 して実行するのであって、他人のサイトのスクリプトをむやみに中身を見ないで実行 してはいけませんが。 ブラウザでダウンロード WEB サイトに実行用ディレクトリを置いて、.htaccess を設定する.htaccess
AddType "application/script" .wsf .reg .txt .htm .html .asp .hta .vbs ライブラリの場合は、単なるテキストとして認知させていましたが、実行または保存する 都合があるので、他のブラウザでも正しく認識させる必要があるので、上記の ような設定をしておきます( Firefox では保存しかできませんが )http://winofsql.jp/wsf/act_web.wsf 上記リンクはダウンロード可能です。但し、実行してしまうとカレントディレクトリに ファイルを作成するので、デスクトップにファイルを作成してしまいます。 ※「即実行」を行う時には、このディレクトリの場所に十分留意する必要があります。 act_web.wsf
<JOB> <OBJECT id="WshShell" progid="WScript.Shell" /> <SCRIPT language="VBScript" src="http://winofsql.jp/webwsh/toolWsh.vbs"></SCRIPT> <SCRIPT language=VBScript> ' *********************************************************** ' 処理開始 ' *********************************************************** Dim ErrorMessage strDir = WshShell.CurrentDirectory Wscript.Echo strDir ' 上書きは不可 Call CreateMdb( strDir & "\db.mdb" ) if ErrorMessage <> "" then Wscript.Echo ErrorMessage ErrorMessage = "" end if ' Google のロゴ strUrl = "http://www.google.co.jp/intl/ja_jp/images/logo.gif" Call HTTPDownload( strUrl, strDir & "\logo.gif" ) if ErrorMessage <> "" then Wscript.Echo ErrorMessage ErrorMessage = "" end if </SCRIPT> </JOB> せっかくなので、php として WEB サーバーに置くためには「即実行」はともかく、ダウンロードして保存する場合、.php という拡張子 が問題になるので、これをどうにかする方法が以下です。 一つ目のヘッダーは、この php を VBScript として Windows に認識させるもので、 二つ目のヘッダーで、ファイル名を指定しています 三つ目のヘツダーはキャッシュしないようにする為のヘッダーです ( キャッシュ関係は、他にも同様のヘッダーがありますが、これが最も古い時代で有効だったものです ) また、php なので、act_web.php?fname=xxxxxx のようにして、php 側を header( "Content-Disposition: attachment; filename={$_GET['fname']}.wsf" ); とすれば、 ダウンロードするファイル名を変更可能にできますhttp://winofsql.jp/wsf/act_web.php act_web.php
<? header( "Content-Type: application/script; Charset=shift_jis" ); header( "Content-Disposition: attachment; filename=act_web.wsf" ); header( "Expires: Wed, 31 May 2000 14:59:58 GMT" ); ?> <JOB> <OBJECT id="WshShell" progid="WScript.Shell" /> <SCRIPT language="VBScript" src="http://winofsql.jp/webwsh/toolWsh.vbs"></SCRIPT> <SCRIPT language=VBScript> ' *********************************************************** ' 処理開始 ' *********************************************************** Dim ErrorMessage strDir = WshShell.CurrentDirectory Wscript.Echo strDir ' 上書きは不可 Call CreateMdb( strDir & "\db.mdb" ) if ErrorMessage <> "" then Wscript.Echo ErrorMessage ErrorMessage = "" end if ' Google のロゴ strUrl = "http://www.google.co.jp/intl/ja_jp/images/logo.gif" Call HTTPDownload( strUrl, strDir & "\logo.gif" ) if ErrorMessage <> "" then Wscript.Echo ErrorMessage ErrorMessage = "" end if </SCRIPT> </JOB> |