WSH の SendKeys で日本語を入力する [WSH][programming]
WSH の SendKeys でユーザのキー入力をエミュレートできます。
しかし、WSH の SendKeys は日本語に対応していないので、日本語を指定しても文字化けしてしまいます。
解決を調べたところ VB.NET では日本語に対応していることが分かりました。
しかも、VB.NET の SendKeys の COM オブジェクトを使いやすく DLL にまとめてくれている Clipboard.VB.NET を発見しました。
これを使えば WSH からも日本語入力を簡単にエミュレートできます。
まず、インストール。
マニュアル通りに Clipboard.DLL を C:\Windows\System32 にコピーし、regasm Clipboard.DLL を実行して登録します。
regasm が見つからないと言われ困りましたが、C:\WINDOWS\Microsoft.NET\Framework\<バージョン> に入っていました。
コマンドプロンプトから以下を実行します。
> cd C:\WINDOWS\Microsoft.NET\Framework\<バージョン> > RegAsm.exe Clipboard.dll
サンプル (JScript)
var WshShell = WScript.CreateObject ("WScript.Shell"); WshShell.Run("NotePad.EXE"); while (!WshShell.AppActivate("メモ帳")) { WScript.Sleep(100); } // WSH の SendKeys は文字化けする WshShell.SendKeys("文字化けします。\n"); // Clipboard.VB.NET の SendKeys は文字化けしない var SendKeysEx = WScript.CreateObject("Clipboard.Clipboard"); SendKeysEx.SendKeys("文字化けしません。\n");