Batch file to VBScript file (8) at 1999 Jul. 12 3.7 新バージョンと実用 下らないことを(7)で書いた気がするが、すっかり忘れて次。 VBSのVer.5ではClassというのが使える。 で、これが難解。 Property Get/Let/Setってのの違いが良く分からない。ヘルプには例がないから悩む、 悩む。継承の機能とも縁がない(ような) VBSなClassって、何か意味あるの? 熟考の末(って、カパカパ『琥珀色したエチルアルコール水溶液』を飲みながらの台詞 ではとっても怪しいが)、こいつはアレだ、アレ。(ぉぃ、こら) …私は、VBSのClassとはC++で言うところのnamespaceだと思うことにしました。 #追記:at 2000 Feb. 4 #Classの認識、多分全然違うわい>わし #公開する前にもーちょっと理解してから書けよな>おれ #う〜む。VBSのClass……。バッチレベルでは使って嬉しいことは特にない気が  してます(これも思いっきり勘違いしてる可能性があります)。 #追記、終わり --- 寄り道 --- C言語の不満。ローカルな関数ってのが作れない。 もちろん、static foo ();という手はあるのだが、ちょっと大きなプログラムだと ファイルA.cとD.cには共通な関数foo()が、ファイルB.cとC.cのみに共通な関数foo() とは違うものである。という宣言はできないのだ。 Cで大きなプログラムを、それも複数の人間が作るとなると、この問題は致命傷に 成りかねない。 その意味でC++な思想は、納得したし、namespaceはあって当然だ。とか思ったもの です。 --- 寄り道終わり ---  もちろん、VBSってのは大仰な言語ではない。しかし、真にローカルな関数を  どういう形であれローカルに留めておけるならばそれは価値があるとか思う  ので、先、行きます。  さて。ここまでぐちゃぐちゃと書いてきた訳ですが、いい加減にうんざりもして  きたのでは?  ちょっと切り口を変えて、本気で使ってみました。という話を次から(次からね)  します。が、その前に。  以下を切りとってtest.vbsで保存して、実行して、まともに動いた人?  皆無?まぁその。うちでもこれでファイル名をちゃんと選択できたマシンってば  1台しかないからなぁ(笑;) ' Common dialog, Open file Option Explicit Const OFN_EXPLORER = &h80000 Const OFN_FILEMUSTEXIST = &h1000 Const OFN_PATHMUSTEXIST = &h800 Const OFN_HIDEREADONLY = &h4 Const OFN_DONTADDTORECENT = &h2000000 Const MAX_PATH = 260 Dim gsInitDir, giFilterIndex Function getFileName(sPath, sTitle) Dim cDlg Set cDlg = CreateObject("MSComDlg.CommonDialog") cDlg.InitDir = gsInitDir cDlg.FilterIndex = giFilterIndex cDlg.Filter = "All files (*.*)" cDlg.DialogTitle = sTitle cDlg.Flags = OFN_EXPLORER Or OFN_FILEMUSTEXIST Or _ OFN_PATHMUSTEXIST Or OFN_HIDEREADONLY Or OFN_DONTADDTORECENT cDlg.MaxFileSize = MAX_PATH cDlg.ShowOpen gsInitDir = cDlg.InitDir giFilterIndex = cDlg.FilterIndex getFileName = cDlg.FileName End Function '============ Dim sFile gsInitDir = "" giFilterIndex = 1 sFile = "" sFile = getFileName(sFile, "開くファイルを選択のこと") Call MsgBox(sFile) '(EOF)  "MSComDlg.CommonDialog"なオブジェクトが作れないでしょ?でも作れるマシンも  あるんだな。  これがそれなりに動いた時にはとっても嬉しかったんだけど、特定マシン以外  では全滅した時にはがっくり。  もしかしたらどのマシンでもちゃんと動かせる方法があるのかも知れません。が、  あたしは諦めました。  教訓:自分のマシンで動いたからといって、他人のマシンでも動くとは限らない  ま、当然ぢゃん。とかいわれそうですけど。  でもね。上のコードが成功した時に出るダイアログってね、Win32なアプリケーション  でFile -> Openってやった時に必ず出る、あれなんです。つまり全てのWindows95/98、  いやNTも持っているコモンダイアログなんですねぇ。  VBScriptからマシンにインストールされているCOMオブジェクトが手軽に呼べたら  それはもう強力だよな。とか思ったのですが、現実は厳しかったです。  やっぱ専用のCOMでないと呼べないみたい(;_;) #だけど、このダイアログを開くために必要となるパラメータの一部はVBSからでは  絶対に指定できない類のポインタを要求しているから、そもそも実行できる方が  間違い。という指摘もありえるけど。でもだったらVBって何よ(爆)  Delphi ScriptとかC Scriptってのがあったら楽勝で指定できるはずなのよね。  (疑義があるならAPIリファレンスでコモンダイアログを参照のこと!)  VBScriptはそれ自身でまともなダイアログを作れないので、代わりにMicrosoft  Forms 2.0なCOMを呼び出したかったんですが、結局あたしにできたのは上のコード  だけでした。え?htmlに貼りつけろって?う〜ん。それするならJScript使います。  そっちだったらNetscapeでも動くはずですから。 #結論:くそったれ(笑) #まぁその、VBScriptでダイアログとかほいほい作れたらWordやExcelの立場は?  とかなるのでMSはやらないだろうなぁ。と、ゆーか、もろにVisual Basicを  買う人がいなくなるかも。誰か作りませんか?xx Script用ダイアログエディタ。  そーするとPerl ScriptだのRuby Scriptだのが64倍おもしろくなるのですが (EOF)