ScriptControlの使用

ScriptControlの使用

WSHマクロにおいてScriptControlを使用することで 各種スクリプトを混在で利用できます。

Script Control - Microsoft Scripting Technologies

JScriptサンプル

//JScriptからVBSのInputBox関数を実行
var oSC = new ActiveXObject("ScriptControl");
oSC.Language = "VBScript";
var sFunc = 'Function InBox(prompt, title, default)\n';
sFunc += '    InBox = InputBox(prompt, title, default)\n';
sFunc += 'End Function\n';
oSC.AddCode(sFunc);
var Ret = oSC.Run ("InBox", "メッセージ", "タイトル", "初期値");
InsText(Ret);

VBScriptサンプル

'VBScriptからJscriptのsplit関数を実行
Dim sCode, oSC, sFileName

sCode = "GetFileNameFromFulPath=function(sBuf) {aRet=sBuf.split('\\');return aRet[aRet.length-1];}"

Set oSC = CreateObject("ScriptControl")
oSC.Language = "JScript"
oSC.AddCode(sCode)
sFileName = oSC.Run("GetFileNameFromFulPath", "c:\winnt\notepad.exe")
Set oSC = Nothing

InsText(sFileName)

PerlScriptサンプル

# http://miau.s9.xrea.com/blog/index.php?itemid=397
sub InputBox
{
    my @args = @_;
    @args = map { encode('cp932', $_) } @args;
    while (@args < 3) {
        push @args, '';
    }
    
    my $sc = Win32::OLE->CreateObject("ScriptControl");
    $sc->{Language} = "VBScript";
    $sc->AddCode(<<EOC);
Function Main(prompt, title, default)
    Main = InputBox(prompt, title, default)
End Function
EOC
    my $ret = $sc->Run("Main", @args);
    $ret = decode('cp932', $ret);
    
    return $ret;
}