前回の続きです。(^_^;
とりあえず、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のブログ