Системные вызовы


Системные вызовы в JavaScript целиком определяются
используемой объектной моделью и настройками безопасности системы.
Существуют в сильно урезанном виде в WSF и JScript

// Simple SENDKEY application

<package>
   <job id="js">
      <script language="JScript">
         var WshShell = WScript.CreateObject("WScript.Shell");
         WshShell.Run("calc");
         WScript.Sleep(100);
         WshShell.AppActivate("Calculator");
         WScript.Sleep(100);
         WshShell.SendKeys("1{+}");
         WScript.Sleep(500);
         WshShell.SendKeys("2");
         WScript.Sleep(500);
         WshShell.SendKeys("~");
         WScript.Sleep(500);
         WshShell.SendKeys("*3");
         WScript.Sleep(500);
         WshShell.SendKeys("~");
         WScript.Sleep(2500);
      </script>
   </job>
</package>

С помощью объекта WScript.Shell можно передавать
управления другим программам и читать ответ:

var WshShell = new ActiveXObject("WScript.Shell");
var oExec = WshShell.Exec("%comspec% /c dire");

function ReadAllFromAny(oExec) {
     if (!oExec.StdOut.AtEndOfStream)
          return oExec.StdOut.ReadAll();
     if (!oExec.StdErr.AtEndOfStream)
          return oExec.StdErr.ReadAll();
     return -1;
}

var allInput = "";
var tryCount = 0;
while (true) {
     var input = ReadAllFromAny(oExec);
     if (-1 == input) {
          if (tryCount++ > 10 && oExec.Status == 1) break;
          WScript.Sleep(100);
     }
     else {
          allInput += input;
          tryCount = 0;
     }
}

if (oExec.ExitCode != 0) {
     WScript.Echo("Warning: Non-zero exit code");
}

WScript.Echo(allInput);