Windows Script Host
JScript
speak.js
// cscript speak.js
var sapi = WScript.CreateObject("SAPI.SpVoice");
sapi.Speak("hello, world");
VBScript
speak.vbs
' cscript speak.vbs
Set sapi = CreateObject("SAPI.SpVoice")
sapi.Speak "hello, world"
PowerShell
speak.ps1
# powershell -ExecutionPolicy RemoteSigned ./speak.ps1
$sapi = New-Object -ComObject "SAPI.Spvoice"
[void]$sapi.Speak("hello, world")
.NET Framework
dev.bat
@echo off
path %path%;C:\Windows\Microsoft.NET\Framework64\v4.0.30319
prompt $e[33m$p$g$e[m
cmd
C#
speak.cs
// csc speak.cs
using System;
using System.Runtime.InteropServices;
class Program {
static void Main() {
Type t = Type.GetTypeFromProgID("SAPI.SpVoice");
dynamic sapi = Activator.CreateInstance(t);
sapi.Speak("hello, world");
Marshal.ReleaseComObject(sapi);
}
}
Visual Basic
speak.vb
' vbc speak.vb
Module Program
Sub Main
Dim sapi As Object
sapi = CreateObject("SAPI.SpVoice")
sapi.Speak("hello, world")
End Sub
End Module
Visual Studio
C++
speak.cpp
// cl /MD /W4 speak.cpp
#include <atlbase.h>
int main(void)
{
HRESULT hr;
hr = CoInitialize(nullptr);
CComPtr<IDispatch> pDisp;
hr = pDisp.CoCreateInstance(L"SAPI.SpVoice");
CComVariant varg[2];
varg[0] = 0;
varg[1] = L"hello, world";
CComVariant vResult;
pDisp.InvokeN(L"Speak", varg, 2, &vResult);
pDisp = nullptr; // 無いとプロセスが残る
CoUninitialize();
}
LibreOffice Basic
Sub Main
sapi = CreateObject("SAPI.SpVoice")
sapi.Speak "hello, world"
End Sub