Premere i tasti della tastiera usando un file batch

Sto cercando di sviluppare un file batch che possa premere automaticamente i tasti freccia sinistra e freccia destra per un numero n di volte con qualche pausa in mezzo. Qualcuno potrebbe aiutarmi con questo?

P.S: Ho provato ad installare un software di tastiera automatica ma non ho potuto farlo perché ero al lavoro. Ho bisogno che questo programma funzioni sul mio PC in ufficio.

Wow! Vuol dire che dovete imparare un altro linguaggio di programmazione solo per inviare due tasti alla tastiera? Ci sono modi più semplici per ottenere la stessa cosa. :-)

Il file Batch qui sotto è un esempio che avvia un altro programma (cmd.exe in questo caso), invia un comando ad esso e poi invia un tasto Freccia su, che fa recuperare l'ultimo comando eseguito. Il file Batch è abbastanza semplice da essere compreso senza problemi, quindi potete modificarlo per adattarlo alle vostre esigenze.

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

Per un elenco di nomi di chiavi per SendKeys, vedere: http://msdn.microsoft.com/en-us/library/8c6yea83(v=vs.84).aspx

Per esempio:

LEFT ARROW    {LEFT}
RIGHT ARROW   {RIGHT}

Per un'ulteriore spiegazione di questa soluzione, vedere: https://stackoverflow.com/questions/16823068/gnuwin32-openssl-s-client-conn-to-websphere-mq-server-not-closing-at-eof-hangs/16868982#16868982

Commentari (6)

Giusto per essere chiari, vuoi lanciare un programma da un file batch e poi far premere i tasti del file batch (nel tuo esempio, i tasti freccia) all'interno del programma lanciato?

Se questo è il caso, non sarete in grado di farlo semplicemente con un file ".bat" perché il lancio fermerebbe il file batch dal continuare fino a quando non termina--

La mia prima raccomandazione sarebbe quella di utilizzare qualcosa come AutoHotkey o AutoIt, se possibile, semplicemente perché entrambi hanno forum attivi dove si possono trovare innumerevoli esempi di persone che lanciano applicazioni e inviano pressioni di tasti, per non parlare degli strumenti per semplicemente "registrare" ciò che si vuole fare. Tuttavia hai detto che questo è un computer di lavoro e potresti non essere in grado di caricare un programma di terze parti... ma non sei senza opzioni.

È possibile utilizzare Windows Scripting Host da qualcosa come un file .vbs per lanciare un programma e inviare chiavi a quel processo. Se stai usando una versione di Windows che include PowerShell 2.0 (Windows XP con Service Pack 3, Windows Vista con Service Pack 1, Windows 7, ecc.) puoi usare Windows Scripting Host come un oggetto COM dal tuo script PS o usare la classe Intereact di VB.

Le specifiche di come farlo sono al di fuori dello scopo di questa risposta, ma è possibile trovare numerosi esempi utilizzando i metodi che ho appena descritto cercando su SO o Google.

edit: Solo per aiutarti a iniziare puoi guardare qui:

  1. Automatizzare i compiti con il metodo SendKeys di Windows Script Host
  2. Un utile thread su SendKeys
Commentari (0)