48 :
nobodyさん :04/12/27 22:19:11 ID:MJXdJeak
Private Function ReadFile(strPath) On Error Resume Next Dim strMes Dim FSO Dim f Dim fStream 'オブジェクト作成 Set FSO = CreateObject("Scripting.FileSystemObject") 'ストリームオブジェクト作成 Set fStream = FSO.OpenTextFile(strPath) '文字列取得 strMes = fStream.ReadAll() ReadFile = strMes End Function
49 :
nobodyさん :04/12/27 22:19:45 ID:MJXdJeak
Private Function OpenIE(u) On Error Resume Next mObjIE.Height = 50 mObjIE.Width = 100 mObjIE.Visible = True mObjIE.Navigate u Do Until mObjIE.Busy = False WScript.Sleep 2000 Loop End Function
50 :
名無し募集中。。。 :05/01/12 01:45:43 ID:pbwyz1nG
これって、Windows系レンタルサーバとかでも使えるのかな?
某スレでCGI作ることになった。 俺はCGI初挑戦。 JavaScriptが比較的得意なので、WSHで行くことにした。 何かあったら、書かせてもらう。
52 :
51 :05/02/25 17:24:10 ID:???
とりあえず、必要な処理をPerlのソース見ながら移植してたんだが、 JavaScriptだけだと、Requestのdecode出来ない事に気づいた。 内部でVBscript呼んで済ませるかな。
53 :
51 :05/03/04 14:40:55 ID:???
ネットで、VBScriptでのURLdecode処理見つけて済ました。 VBScript URL decodeでググルと3番目くらいに出た掲示板から。
54 :
1 :2005/04/12(火) 17:15:02 ID:???
かなりおひさしぶりです。懲りずに続けます。 >46-49 InternetExplorerオブジェクトですね 今さっと見ただけなので何に使うかあとで確認します。 >53 日本語デコードができないと困りますよね。ASPの組み込みオブジェクトはASP 動作でないと使えませんのでここでは当然自分でやらねばなりません。 とりあえす、1が自作したものも上げておきます。動けばいいで作成したのでバグありと前提で。 IE6、N6で昔確認しました。
55 :
1 :2005/04/12(火) 17:41:14 ID:???
Option Explicit '●エンコード文字列分解の正規表現 Private ObjRgExDecode Set ObjRgExDecode=New RegExp With ObjRgExDecode .Global=true .Pattern="%[0-9A-F][0-9A-F]|." .IgnoreCase=true End With
56 :
1 :2005/04/12(火) 17:43:48 ID:???
'●シフトJISデコード sc;エンコード文字列 Public Function PF_Decode(ByVal sc) Dim ms,d0,d1,d2,d3,d,s On Error Resume Next sc=replace(sc,"+"," ",1,-1,1) Set ms=ObjRgExDecode.Execute(sc) d0=""
57 :
1 :2005/04/12(火) 17:45:51 ID:???
For Each d1 in ms d2=split(d1,"%") if d0="" then '1バイト目か? if d2(0)="" then 'エンコード文字だったら d3=clng("&H" & d2(1)) if (d3>=&H81 and d3<=&H9f) or (d3>=&He0 and d3<=&Hef) then '2バイト文字の1バイト目なら d0=d2(1) d="" else d0="" d=chr("&H" & d2(1)) End if Else d0="" d=d2(0) End if
58 :
1 :2005/04/12(火) 17:46:42 ID:???
Else '日本語2バイト目だったら if d2(0)="" then 'エンコード文字だったら d=chr("&H" & d0 & d2(1)) d0="" else '通常文字だったら d=chr("&H" & d0 & hex( asc(d2(0)) ) ) d0="" end if End if s=s & d next if err.number>0 then PF_Decode="" Else PF_Decode=CStr(s) End if End Function
59 :
1 :2005/04/12(火) 18:02:26 ID:???
>>55-58 これらは連続しています。
1つのVBSファイルにコピーしてください。
ファイル名はなんでもいいです。support01.vbsとでもしておきます。
wsfファイルでライブラリインクルードするとJScriptでも使えます。
VBSのPF_Decode関数はエラーなら空文字列を返します。
以下、CGI実行.wsfファイルソースの例。
なお、</SCRIPT> は省略して <SCRIPT 〜 />という書き方はしゃれてますw
<job>
<SCRIPT language="vbs" src="./support01.vbs" />
<SCRIPT language="JScript">
//例 var sText=PF_Decode(デコードしたい文字列);
</SCRIPT>
</job>
60 :
nobodyさん :2005/04/12(火) 18:07:49 ID:w/mYA2Io
なにこの気持ち悪いオナヌースレ
61 :
1 :2005/04/12(火) 23:59:48 ID:???
デコードVBS関数その2です。こちらのがいいかも。なお、Windows環境を前提。自分は
>>1 でもあるように不特定へのインターネット上公開を前提としてませんのであしらかず。
以下、連続します。同じように1つのファイルにコピーして下さい。
'●正規表現を定義
Private ObjRgExDecode
Set ObjRgExDecode=New RegExp
With ObjRgExDecode
.Global=true
.IgnoreCase=true
.Pattern ="(?:%[0-9a-f][0-9a-f])|."
End With
62 :
61の続き :2005/04/13(水) 00:04:06 ID:???
'●WinIEからのシフトJISデコード関数 sc;エンコード文字列 Public Function PF_Decode(ByVal sc) Dim ms,d0,d1,d,s On Error Resume Next Set ms=ObjRgExDecode.Execute (sc) For each d in ms if d0>"" then 'trueなら2バイト文字の2バイト目を調べる if left(d,1)="%" then 'エンコード文字 s=s & Chr(Clng(d0 & replace(d,"%",vbnullstring))) d0="" Else '2バイト目のはず s=s & Chr(CLng(d0 & "00") + AscB(d)) d0="" End if Else '1バイト目又は通常文字を調べる if Left(d,1)="%" then 'エンコード文字 d0=replace(d,"%","&H") d1=Clng(d0) if (&H81<=d1 and d1<=&H9f) or (&He0<=d1 and d1<=&Hfc) then '2バイト文字の1バイト目 else '1バイト文字エンコード d0="" s= s & Chr(d1) End if
63 :
62の続き :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 :2005/04/13(水) 00:28:04 ID:???
>>61-63 は連続していますので、コピーして1つの.vbsファイルにして下さい。
ファイル名はとりあえず、support02.vbsとでもしておきます。
使用法は同じです。PF_Decode関数の引数にエンコード文字列を与えて呼べば、デコードされた文字列が返ります。
JScript,VBSの正規表現はPerlのものに比べると機能が貧弱です。
従ってもっと単純な方法(正規表現を使わず順に1文字づつフラグなどを使い調べていくとか)のほうが速いかも知れません。
面倒ですよねぇ(笑)
【ちょっと一息。】
WSHに限りませんが、オブジェクト操作においての注意点を少しあげておきます。
JScriptではオブジェクトメソッドとしての実行呼び出しには引数がなくても()を付けます。
例えば
>>11 のQuitメソッド や
>>16 のReadAllメソッドで言えば、
WScript.Quit();
var sText=WScript.StdIn.ReadAll();
のようにします。
VBSでは引数のない場合の空カッコは通常わざわざ書く必要がありません。
使うならCallステートメント形式にします。
VBSとJScriptを両方使っているとJScriptで()を忘れることがあるかも知れません。という事でした。
【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:実行させたい指定スクリプトエンジン名 のオプション指定を忘れないように。
>>67 訂正w
誤り箇所
※WScript.exenのパスが
訂正後→
※WScript.exeへのパスが
下書きなんかないし、ダラダラ書きで、ageちゃってるし
だって眠いんだもんw
【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>
【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>
【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>
【VBScriptサンプル02 解説1】
>>70-71 重複失礼。どちらも同じ内容なの。
>>69 訂正。
<FORM action="./sample02.wsf" method="post" name="form1" taerget="_blank">
の taerget="_blank" の taerget は誤り。
targetに直してw
【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 :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 :2005/07/24(日) 16:51:21 ID:???
>>76 思いつき書き込みしかしないから(w、またやってしまった
【訂正】
【ついでに】
>ChrやAsc関数をJScropt関数で作ったほうが速いいかなぁ?
JScropt→JScript
書き方が悪くて意味が伝わりませんね?
Chr関数自体をJScriptで作るのではなく、
JScript中でVBSのChr関数を呼び出して、JScript製のデコード関数を作ると言う意味です。
JScriptのほうが正規表現やユーザー関数の拡張性が高いからね、VBSより効率的にかけるかな。
あとでやっておきます。いつかね(w
自age (w みんなAN HTTPDめんどいのかなぁ
つーか、デコードするCOMオブジェクトないの? IEは公開してないのか?
ほす
このスレの内容にばちこーん興味を持ったので保守
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 :2006/08/24(木) 12:48:36 ID:???
すいません板違いでした。Web製作板へ行ってきます。
87 :
nobodyさん :2006/09/28(木) 00:44:11 ID:23IKIm9v
何にせよ、ありがとうと言いたい
89 :
nobodyさん :2007/09/06(木) 00:53:56 ID:lxdRIcpr
WSH初心者ですが少し教えてください 特定のソフトを起動するためのVBSの書式を教えてください ちなみにバッチファイルでは起動しないソフトもあったのでこちらが良いと言われました ソフトは壷です "C:\Program Files\2chtubo\2chtubo.exe" 通常ならこのようなバッチファイルで起動するはずなんですが なぜか起動しませんでした なのでVBSでやってみたいです
>WSH初心者ですが少し教えてください 初心者だから??なに? >特定のソフトを起動するためのVBSの書式を教えてください ええと、、、ググリましたか? >ちなみにバッチファイルでは起動しないソフトもあったのでこちらが良いと言われました どちらさまに言われましたか? >なぜか起動しませんでした。なのでVBSでやってみたいです やりたいなら調べろよ
>>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 を使って いるのですが,自宅でも作業がしたくって.
94 :
nobodyさん :2008/05/25(日) 01:09:26 ID:uDPNiz6J
95 :
電脳プリオン :2011/12/17(土) 20:01:41.87 ID:??? BE:354732375-2BP(1960)
( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/ ←
>>9 (_フ彡 /
96 :
nobodyさん :2013/07/30(火) 20:50:09.72 ID:FAIklnka
>大阪府三島郡島本町の小学校や中学校は、暴力イジメ学校や。 島本町の学校でいじめ・暴力・脅迫・恐喝などを受け続けて、心も身体も壊されて廃人同様になってしもうた僕が言うんやから、 まちがいないで。精神病院へ行っても、ちっとも良うならへん。教師も校長も、暴力やいじめがあっても見て見ぬフリ。 そればかりか、イジメに加担する教師もおった。 誰かがイジメを苦にして自殺しても、「本校にイジメは なかった」と言うて逃げるんやろうなあ。 島本町の学校の関係者は、僕を捜し出して口封じをするな >島本町って町は、暴力といじめの町なんだな >「口封じ」なんかしません。どうぞ、気が済むまでお書き込み下さい。 島本町は日本の恥!島本町は日本の迷惑!
97 :
nobodyさん :
2014/02/13(木) 19:01:25.12 ID:wYrEGcCV an Httpdとjscriptでcgiするのは簡単でいいね