バッチファイルによるキーボードキーの押下

左矢印キーと右矢印キーをn回、間を空けて自動的に押すバッチファイルを開発しようとしています。どなたか教えてください。

追伸:オートキーボードのソフトをインストールしようとしましたが、仕事中なのでインストールできませんでした&#8252。このプログラムを会社のPCで動作させる必要があります。

質問へのコメント (4)

すげえええええええええええええええええええええええキーボードに2つのキーを送るだけで、別のプログラミング言語を学ばなければならないということですか?同じことを実現するために、もっと簡単な方法がありますよ。:-)

下のバッチファイルは、別のプログラム(この場合はcmd.exe)を起動し、コマンドを送信した後、上矢印キーを送信し、最後に実行したコマンドを回復させる例です。このバッチファイルは簡単なものですので、ご自分の用途に合うように変更してください。

@if (@CodeSection == @Batch) @then

@echo off

rem Use %SendKeys% to send keys to the keyboard buffer
set SendKeys=CScript //nologo //E:JScript "%~F0"

rem Start the other program in the same Window
start "" /B cmd

%SendKeys% "echo off{ENTER}"

set /P "=Wait and send a command: " < NUL
ping -n 5 -w 1 127.0.0.1 > NUL
%SendKeys% "echo Hello, world!{ENTER}"

set /P "=Wait and send an Up Arrow key: [" < NUL
ping -n 5 -w 1 127.0.0.1 > NUL
%SendKeys% "{UP}"

set /P "=] Wait and send an Enter key:" < NUL
ping -n 5 -w 1 127.0.0.1 > NUL
%SendKeys% "{ENTER}"

%SendKeys% "exit{ENTER}"

goto :EOF

@end

// JScript section

var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.SendKeys(WScript.Arguments(0));

SendKeysのキー名一覧は、こちらをご覧ください。 http://msdn.microsoft.com/en-us/library/8c6yea83(v=vs.84).aspx

例えば

LEFT ARROW    {LEFT}
RIGHT ARROW   {RIGHT}

この解答の詳細については、https://stackoverflow.com/questions/16823068/gnuwin32-openssl-s-client-conn-to-websphere-mq-server-not-closing-at-eof-hangs/16868982#16868982 を参照してください。

解説 (6)

バッチファイルからプログラムを起動し、その起動したプログラムの中でキー(この例では矢印キー)を押させるということでしょうか。

もしそうなら、単純に".bat"ファイルでは、バッチファイルを終了させるまで継続させることができないでしょう。

というのも、どちらも活発なフォーラムがあり、アプリケーションを起動したり、キーを押したりしている人たちの例を無数に見つけることができます。しかし、あなたはこれが仕事用のコンピュータであり、サードパーティのプログラムをロードすることができないかもしれないと言いました...しかし、あなたは選択肢がないわけではありません。

.vbsファイルのようなものからWindows Scripting Hostを使用してプログラムを起動し、そのプロセスにキーを送ることができます。PowerShell 2.0を含むWindows(Windows XP with Service Pack 3、Windows Vista with Service Pack 1、Windows 7など)を使用している場合、Windows Scripting HostをCOMオブジェクトとしてPSスクリプトから使用するか、VB'のInteractクラスを使って使用することができます。

具体的な方法はこの回答の範囲外ですが、SOやGoogleで検索すると、今説明した方法を使った例が多数見つかります。

edit: 手始めとして、こちらをご覧ください。

1.Windows Script Host'のSendKeysメソッドでタスクを自動化する。 2.SendKeysに関する有用なスレッド

解説 (0)