十進BASICでVBScriptのeval関数を呼び出してみた。(2)

 前回の続きです。(^_^;
 とりあえず、VBScriptのExecute文とeval()関数を呼び出せば、いろんなことができます。o(^-^)o

● VBsEval2.BAS

DECLARE EXTERNAL FUNCTION VBs.Eval$, VBs.Eval
DECLARE EXTERNAL SUB VBs.Exec
DECLARE EXTERNAL FUNCTION qq$,Replace$,SpecialFolders$

PRINT Replace$("pXXpXXPXXp","p","Y")
PRINT SpecialFolders$("Fonts")

END

! s$をダブルクォートで囲った文字列を返す
EXTERNAL FUNCTION qq$(s$)
LET qq$ = CHR$(34)& s$ &CHR$(34)
END FUNCTION

! VBScriptのReplace関数(ただし、引数3つ)
EXTERNAL FUNCTION Replace$(s$,f$,r$)
LET t$ = "Replace("& qq$(s$) &","& qq$(f$) &","& qq$(r$) &")"
LET Replace$ = VBs.Eval$(t$)
END FUNCTION

! 特殊フォルダー名取得 SpecialFolders$
EXTERNAL FUNCTION SpecialFolders$(s$)
CALL VBs.Exec("Dim objWshShell: Set objWshShell = CreateObject(""WScript.Shell"")")
LET t$ = "objWshShell.SpecialFolders("& qq$(s$) &")"
LET SpecialFolders$ = VBs.Eval$(t$)
END FUNCTION

MODULE VBs
OLE CREATEOBJECT "ScriptControl"
EXTERNAL SUB setLanguage(s$)
   OLE PropertyPut "language"
END SUB
CALL setLanguage("VBS")
PUBLIC FUNCTION Eval$, Eval
PUBLIC SUB Exec

EXTERNAL SUB Exec(s$)
   OLE METHOD "ExecuteStatement"
END SUB

EXTERNAL FUNCTION Eval$(s$)
   OLE METHOD "eval"
END FUNCTION

EXTERNAL FUNCTION Eval(s$)
   OLE METHOD "eval"
END FUNCTION

END MODULE

●実行結果

YXXYXXPXXY
C:\Windows\Fonts

※参考URL
Replace 関数|VBScript関数リファレンス

WSH@Workshop - WSHのサンプル集&リファレンス
十進BASICでVBScriptのeval関数を呼び出してみた - rscのブログ