1 名前:nobodyさん mailto:sage [03/08/01 22:37 ID:???] 【このスレの概要】 ・Windows Script Host (=WSH)をCGI利用する ・JScript、又はVBScriptをCGIスクリプトとする ・自PCをサーバー稼動させる事を前提とする ・原則、Windows以外はフリーで入手できるアプリ、ツールの利用 【対象環境】 ・Windows95以上及び、WSH5.6以上のインストール済み ・Webサーバーソフトにはフリー配布のAN HTTPDを前提とする ※作者:中田 昭雄氏 配布元:ttp://www.st.rim.or.jp/~nakata/ なお、このスレでの内容を直接、中田氏サイトへ質問するのはやめて頂きたい。 【お約束】 ・試行は自PCで自己責任で行う ・商用実利用は前提としていない、本スレは、プログラム技術的知識、お遊び、趣味の範囲であることを理解する
63 名前:62の続き mailto:sage [2005/04/13(水) 00:05:49 ID:???] Else '通常文字とみなす if d="+" then s=s & " " else s=s & d end if End if End if next PF_Decode=s End Function
64 名前:1 mailto:sage [2005/04/13(水) 00:28:04 ID:???] >>61-63 は連続していますので、コピーして1つの.vbsファイルにして下さい。 ファイル名はとりあえず、support02.vbsとでもしておきます。 使用法は同じです。PF_Decode関数の引数にエンコード文字列を与えて呼べば、デコードされた文字列が返ります。 JScript,VBSの正規表現はPerlのものに比べると機能が貧弱です。 従ってもっと単純な方法(正規表現を使わず順に1文字づつフラグなどを使い調べていくとか)のほうが速いかも知れません。 面倒ですよねぇ(笑)
65 名前:nobodyさん mailto:sage [2005/04/13(水) 02:27:56 ID:???] 【ちょっと一息。】 WSHに限りませんが、オブジェクト操作においての注意点を少しあげておきます。 JScriptではオブジェクトメソッドとしての実行呼び出しには引数がなくても()を付けます。 例えば >>11 のQuitメソッド や >>16 のReadAllメソッドで言えば、 WScript.Quit(); var sText=WScript.StdIn.ReadAll(); のようにします。 VBSでは引数のない場合の空カッコは通常わざわざ書く必要がありません。 使うならCallステートメント形式にします。 VBSとJScriptを両方使っているとJScriptで()を忘れることがあるかも知れません。という事でした。
66 名前:nobodyさん mailto:sage [2005/04/15(金) 00:55:25 ID:???] 【AN HTTPD ワンポイント】 >>3 のように 実際に.wsf .vbs .js の拡張子ファイルをCGIスクリプトとして登録すると、 DHTMLとしてのクライアント実行させたい.vbsと.jsファイルも設置してしまうと クライアントがファイル要求した段階で当然サーバー上でWSHでCGI実行される事になる。 これはセキュリティ上留意して欲しい。 これを避けたい場合は、 ・クライアントスクリプトはスクリプトファイルを使わずHTMLで混在記述する。 ・CGIスクリプトファイルのほうを別の独自の拡張子にする。スクリプト実行のWScript.exeの指定さえ合っていればOKである。 また、これは基本だがCGI実行許可フォルダを限定する場合、許可していないフォルダに置いてしまうと当然、スクリプトファイルはCGI実行されずDLされ中身を見られてしまう。
67 名前:nobodyさん [2005/04/15(金) 01:42:25 ID:iiba0wU4] >>66 補足 .vbsと.jsファイルを独自拡張子にしてCGI実行する場合、 例えば、Test.vbsファイルをTest.vbcgiという独自拡張子に変えて使いたい場合、 AN HTTPDには VBScriptエンジンで実行させたい拡張子をまとめて、 実行ファイルには WScript //E:vbscript のように指定して登録して欲しい。 ※WScript.exenのパスが通っているだろうからこれでOK。 //E:実行させたい指定スクリプトエンジン名 のオプション指定を忘れないように。
68 名前:nobodyさん mailto:sage [2005/04/15(金) 01:46:07 ID:???] >>67 訂正w 誤り箇所 ※WScript.exenのパスが 訂正後→ ※WScript.exeへのパスが 下書きなんかないし、ダラダラ書きで、ageちゃってるし だって眠いんだもんw
69 名前:nobodyさん mailto:sage [2005/04/15(金) 17:02:04 ID:???] 【VBScriptサンプル02 その1 HTMLフォーム】 HTMLフォームからの受信データを処理するサンプル。sample02.htmで設置。 <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" Content="text/html; charset=x-sjis"> <TITLE></TITLE> </HEAD> <BODY> <FORM action="./sample02.wsf" method="post" name="form1" taerget="_blank"> テキスト1<BR> <INPUT name="txt1"><BR> テキスト2<BR> <TEXTAREA name="txt2" wrap=off></TEXTAREA><BR> <INPUT type="submit" value="Submit" name="submit1"> </FORM> </BODY> </HTML>
70 名前:nobodyさん mailto:sage [2005/04/15(金) 17:06:31 ID:???] 【VBScriptサンプル02 その2 CGIスクリプトWSFファイル】 以下をその1のsample02.htmと同じ、sample02.wsfで設置、なおコードを見ても分かるように、>>61-63 のsupport02.vbsファイルも設置。 <JOB> <SCRIPT language=vbs src="support02.vbs" /> <SCRIPT language=vbs> Option Explicit Private ObjWshShell,ColWshEnv Private d,d0,d1,d2 Set ObjWshShell=WScript.CreateObject("WScript.Shell") Set ColWshEnv=ObjWshShell.Environment("Process") Select Case ColWshEnv("REQUEST_METHOD") 'フォーム送信データを取得 Case "POST" d=WScript.StdIn.ReadAll '実際にはサイズチェックを事前にすべき。 Case "GET" d=ColWshEnv("QUERY_STRING") End Select With WScript.StdOut .WriteLine "Content-type: text/html" & vbCRLF & vbCRLF & "<HTML><HEAD><TITLE>サンプル02</TITLE></HEAD><BODY noWrap>" .WriteLine "生データ<BR>" & d & "<BR>取得データ<BR>" d0=Split(d,"&",-1,1) 'POST生データを"name=data"単位で分離 For Each d1 in d0 d2=Split(d1,"=",2,1) ' "name=data"をnameとdataに要素数2の配列に分離格納 .WriteLine d2(0) & "=" & PF_Decode(d2(1)) & "<BR>" Next .WriteLine "完了</BODY>" End With </SCRIPT> </JOB>
71 名前:nobodyさん mailto:sage [2005/04/15(金) 17:07:23 ID:???] 【VBScriptサンプル02 その2 CGIスクリプトWSFファイル】 以下をその1のsample02.htmと同じ、sample02.wsfで設置、なおコードを見ても分かるように、>>61-63 のsupport02.vbsファイルも設置。 <JOB> <SCRIPT language=vbs src="support02.vbs" /> <SCRIPT language=vbs> Option Explicit Private ObjWshShell,ColWshEnv Private d,d0,d1,d2 Set ObjWshShell=WScript.CreateObject("WScript.Shell") Set ColWshEnv=ObjWshShell.Environment("Process") Select Case ColWshEnv("REQUEST_METHOD") 'フォーム送信データを取得 Case "POST" d=WScript.StdIn.ReadAll '実際にはサイズチェックを事前にすべき。 Case "GET" d=ColWshEnv("QUERY_STRING") End Select With WScript.StdOut .WriteLine "Content-type: text/html" & vbCRLF & vbCRLF & "<HTML><HEAD><TITLE>サンプル02</TITLE></HEAD><BODY noWrap>" .WriteLine "生データ<BR>" & d & "<BR>取得データ<BR>" d0=Split(d,"&",-1,1) 'POST生データを"name=data"単位で分離 For Each d1 in d0 d2=Split(d1,"=",2,1) ' "name=data"をnameとdataに要素数2の配列に分離格納 .WriteLine d2(0) & "=" & PF_Decode(d2(1)) & "<BR>" Next .WriteLine "完了</BODY>" End With </SCRIPT> </JOB>
72 名前:nobodyさん mailto:sage [2005/04/15(金) 17:21:38 ID:???] 【VBScriptサンプル02 解説1】 >>70-71 重複失礼。どちらも同じ内容なの。 >>69 訂正。 <FORM action="./sample02.wsf" method="post" name="form1" taerget="_blank"> の taerget="_blank" の taerget は誤り。 targetに直してw
73 名前:nobodyさん mailto:sage [2005/04/15(金) 17:34:37 ID:???] 【VBScriptサンプル02 解説2】 このサンプル02は sample02.htm >>69 sample02.wsf >>70 ※71は70と同じものなので無視。 support02.vbs >>61-63 の3つのファイルを同じフォルダに設置してください。 sample02.htmを表示して送信して下さい。フォームからのデータ取得のサンプルです。 あくまでサンプルですので、エラー処理はしていませんし、実用コードではありません。 POST、GETに対応していますが、POSTデータの場合は実際はただReadAllで読み込むの注意です。 POSTの場合、サイズが巨大なものが有り得ますので、事前サイズチェックはしましょう。
74 名前:nobodyさん [2005/07/18(月) 02:41:24 ID:MLViLjPO] ホス
75 名前:nobodyさん [2005/07/20(水) 01:42:56 ID:P18HiGG/] ホシュホシュ
76 名前:1 mailto:sage [2005/07/24(日) 16:43:18 ID:???] 保守されていたので、ネタを何か(w >>45 俺もわかんない(w 初めてWebサイトみたときの記憶で、質問をジエンするときに使う感じでうろ覚え(w FAQに似てると思うけど(w >>50 WSHは使わせないというか、最初から危なくて業務用Winサーバーに入れとかないでしょ。 ここはプライベートというか、あくまで遊びだから。 >>60 みんなももっとネタ出してよ。 【ついでに】 ・WSH関係あさればたまに目にすると思うけど。バイナリーのファイル入出力はADO2.8がインストされてればADODB.Streamでできるんだけどさ。 CGI実行時に標準入出力を読み書きする解決にはならないよん。 ・>>55-58 >>61-63 は Shift-JISデコード関数をVBSで書いてるけどVBSエンジンだけインクルードしてChrやAsc関数をJScropt関数で作ったほうが速いいかなぁ? 作ってみるわ。誰かもやってよ(w
77 名前:1 mailto:sage [2005/07/24(日) 16:51:21 ID:???] >>76 思いつき書き込みしかしないから(w、またやってしまった 【訂正】 【ついでに】 >ChrやAsc関数をJScropt関数で作ったほうが速いいかなぁ? JScropt→JScript 書き方が悪くて意味が伝わりませんね? Chr関数自体をJScriptで作るのではなく、 JScript中でVBSのChr関数を呼び出して、JScript製のデコード関数を作ると言う意味です。 JScriptのほうが正規表現やユーザー関数の拡張性が高いからね、VBSより効率的にかけるかな。 あとでやっておきます。いつかね(w
78 名前:nobodyさん mailto:age [2005/07/24(日) 17:04:20 ID:???] 自age (w みんなAN HTTPDめんどいのかなぁ
79 名前:nobodyさん mailto:age [2005/09/06(火) 02:04:33 ID:???] つーか、デコードするCOMオブジェクトないの? IEは公開してないのか?
80 名前:nobodyさん mailto:sage [2006/05/22(月) 08:58:11 ID:???] ほす
81 名前:nobodyさん mailto:sage [2006/07/08(土) 09:15:04 ID:???] このスレの内容にばちこーん興味を持ったので保守
82 名前:nobodyさん [2006/08/24(木) 12:18:03 ID:UeLY+x3U] 藁をもつかむ気持ちでお願いします。 vbsからexcelのマクロを起動する方法ってどうするのでしょうか? エクセルマクロを使用するためにtest.wsfからvbs.vbsを呼んでいます。 下記のソースでtest.xlsに埋め込まれているMacro1というマクロを呼び出そうと しましたが「オブジェクトでサーポートされていないプロパティです」 というエラーが出てしまいます。 ------------------------------------test.wsf記述 <job id="ExcelJob"> <reference guid="00020813-0000-0000-C000-000000000046"></reference> <script language="VBScript" src="./vbs.vbs"></script> <script language="VBScript"> Call prcMain </script> </job> ------------------------------------vbs.vbs記述 Sub prcMain() Set Excel = CreateObject("Excel.Application") Excel.Workbooks.Open("c:\test.xls") Set xlSheet = Excel.Worksheets(1) Excel.Visible = True Set objSelection = Excel.Workbooks(1).Worksheets(1).Macro1 End Sub
83 名前:82 mailto:sage [2006/08/24(木) 12:48:36 ID:???] すいません板違いでした。Web製作板へ行ってきます。
84 名前:nobodyさん mailto:sage [2006/08/24(木) 18:56:31 ID:???] >>82-83 Web製作ではなく↓に誘導しておきます。 WSH(・∀・)スレッド! pc8.2ch.net/test/read.cgi/tech/1055075469/l50
85 名前:nobodyさん mailto:age [2006/09/27(水) 19:51:41 ID:???] いろいろなサイトを閲覧して、ローカルPCに溜まったCookieファイルを、VBScriptで定期的に自動消去する処理は、どうすれば良いでしょうか? ttp://www.happy2-island.com/vbs/cafe02/capter00210.shtml ファイルの削除を参考にしてみましたが、Cookieファイルの指定がうまくできませんでした。
86 名前:nobodyさん mailto:sage [2006/09/28(木) 00:09:34 ID:???] >>85 IEのCOM使ったほうがいいぞ あと↓で聞いたほうがいい お前ら、wsh使ってますか? part6 pc8.2ch.net/test/read.cgi/win/1155040873/
87 名前:nobodyさん [2006/09/28(木) 00:44:11 ID:23IKIm9v] >>86 どうもありがとう。
88 名前:nobodyさん mailto:sage [2007/07/04(水) 14:20:44 ID:???] 何にせよ、ありがとうと言いたい
89 名前:nobodyさん [2007/09/06(木) 00:53:56 ID:lxdRIcpr] WSH初心者ですが少し教えてください 特定のソフトを起動するためのVBSの書式を教えてください ちなみにバッチファイルでは起動しないソフトもあったのでこちらが良いと言われました ソフトは壷です "C:\Program Files\2chtubo\2chtubo.exe" 通常ならこのようなバッチファイルで起動するはずなんですが なぜか起動しませんでした なのでVBSでやってみたいです
90 名前:nobodyさん mailto:sage [2007/09/06(木) 09:46:52 ID:???] >WSH初心者ですが少し教えてください 初心者だから??なに? >特定のソフトを起動するためのVBSの書式を教えてください ええと、、、ググリましたか? >ちなみにバッチファイルでは起動しないソフトもあったのでこちらが良いと言われました どちらさまに言われましたか? >なぜか起動しませんでした。なのでVBSでやってみたいです やりたいなら調べろよ
91 名前:nobodyさん mailto:sage [2007/09/06(木) 18:20:14 ID:???] >>89 Wscript.Run "C:\Program Files\2chtubo\2chtubo.exe"
92 名前:nobodyさん [2008/03/10(月) 10:17:26 ID:nD3TpBhG] ローカルで定型処理に VBScript を使っているのですが, デバッガとしてフリーで使えるものって何かありませんでしょうか? たとえばどれかの Express Edition とか. 職場では Visual Studio 2005 Professional Edition を使って いるのですが,自宅でも作業がしたくって.
93 名前:nobodyさん mailto:sage [2008/03/12(水) 22:41:47 ID:???] ttp://www.microsoft.com/downloads/details.aspx?FamilyID=e606e71f-ba7f-471e-a57d-f2216d81ec3d&DisplayLang=ja をインストールして、cscript.exeやwscript.exeに//Dオプションを付けて スクリプトを実行すればデバッガが使用可能になりますよ
94 名前:nobodyさん [2008/05/25(日) 01:09:26 ID:uDPNiz6J] JavaScript でJISエンコードが可能な、escape() 関数ライブラリ ttp://nurucom-archives.hp.infoseek.co.jp/digital/ 但しサーバー運用に向いているかは未確認w (負荷とか)