Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Press Keyboard keys using a batch file [closed]

I am trying to develop a batch file which can automatically press left arrow and right arrow key for n number of times with some pause in between. Could anybody please help me with this?

P.S: I tried installing auto keyboard software but I couldn't install them since I was at work. I need this program to work on my office PC.

like image 890
Rupesh Avatar asked Jun 11 '13 07:06

Rupesh


People also ask

How Use Ctrl C in batch file?

Ctrl+C. One of the most universal methods of aborting a batch file, command, or another program while it's running is to press and hold Ctrl + C . This keyboard shortcut sends a SIGINT signal, which cancels or terminates the currently-running program and returns you to the command line.


2 Answers

Wow! Mean this that you must learn a different programming language just to send two keys to the keyboard? There are simpler ways for you to achieve the same thing. :-)

The Batch file below is an example that start another program (cmd.exe in this case), send a command to it and then send an Up Arrow key, that cause to recover the last executed command. The Batch file is simple enough to be understand with no problems, so you may modify it to fit your needs.

@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)); 

For a list of key names for SendKeys, see: http://msdn.microsoft.com/en-us/library/8c6yea83(v=vs.84).aspx

For example:

LEFT ARROW    {LEFT} RIGHT ARROW   {RIGHT} 

For a further explanation of this solution, see: GnuWin32 openssl s_client conn to WebSphere MQ server not closing at EOF, hangs

like image 151
Aacini Avatar answered Sep 16 '22 12:09

Aacini


Just to be clear, you are wanting to launch a program from a batch file and then have the batch file press keys (in your example, the arrow keys) within that launched program?

If that is the case, you aren't going to be able to do that with simply a ".bat" file as the launched would stop the batch file from continuing until it terminated--

My first recommendation would be to use something like AutoHotkey or AutoIt if possible, simply because they both have active forums where you'd find countless examples of people launching applications and sending key presses not to mention tools to simply "record" what you want to do. However you said this is a work computer and you may not be able to load a 3rd party program.. but you aren't without options.

You can use Windows Scripting Host from something like a .vbs file to launch a program and send keys to that process. If you're running a version of Windows that includes PowerShell 2.0 (Windows XP with Service Pack 3, Windows Vista with Service Pack 1, Windows 7, etc.) you can use Windows Scripting Host as a COM object from your PS script or use VB's Intereact class.

The specifics of how to do it are outside the scope of this answer but you can find numerous examples using the methods I just described by searching on SO or Google.

edit: Just to help you get started you can look here:

  1. Automate tasks with Windows Script Host's SendKeys method
  2. A useful thread about SendKeys
like image 45
AdderallPowered Avatar answered Sep 18 '22 12:09

AdderallPowered