web-dev-qa-db-fra.com

Appuyez sur les touches du clavier à l'aide d'un fichier de commandes.

J'essaie de développer un fichier batch qui peut appuyer automatiquement sur les flèches gauche et droite plusieurs fois, avec une pause entre les deux. Quelqu'un pourrait-il m'aider s'il vous plaît avec cela?

P.S: J'ai essayé d'installer un logiciel de clavier automatique mais je ne pouvais pas les installer car j'étais au travail. J'ai besoin de ce programme pour fonctionner sur mon PC de bureau.

29
Rupesh

Hou la la! Cela signifie-t-il que vous devez apprendre un langage de programmation différent pour envoyer deux touches au clavier? Il existe des moyens plus simples d’atteindre le même objectif. : -)

Le fichier batch ci-dessous est un exemple qui démarre un autre programme (cmd.exe dans ce cas), lui envoie une commande, puis envoie une touche de flèche vers le haut, permettant de récupérer la dernière commande exécutée. Le fichier de commandes est assez simple pour être compris sans problèmes, vous pouvez donc le modifier pour répondre à vos besoins.

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

Pour obtenir une liste des noms de clé pour SendKeys, voir: http://msdn.Microsoft.com/en-us/library/8c6yea83 (v = vs.84) .aspx

Par exemple:

LEFT ARROW    {LEFT}
RIGHT ARROW   {RIGHT}

Pour une explication plus détaillée de cette solution, voir: GnuWin32 openssl s_client connecté au serveur WebSphere MQ ne se fermant pas à EOF, se bloque

46
Aacini

Pour être clair, vous souhaitez lancer un programme à partir d'un fichier de commandes, puis le faire appuyer sur les touches (dans votre exemple, les touches fléchées) dans le programme lancé?

Si tel est le cas, vous ne pourrez pas le faire simplement avec un fichier ".bat" car le fichier lancé empêcherait le fichier de traitement de continuer jusqu'à ce qu'il se termine -

Ma première recommandation serait d'utiliser quelque chose comme AutoHotkey ou AutoIt si possible, tout simplement parce qu'ils ont tous les deux un forum actif sur lequel vous trouverez d'innombrables exemples de personnes lançant des applications et envoyant des appuis sur les touches sans parler d'outils pour simplement "enregistrer" ce que vous voulez. faire. Cependant, vous avez dit qu'il s'agissait d'un ordinateur de travail et que vous ne pourriez peut-être pas charger un programme tiers .. mais vous n'êtes pas sans options.

Vous pouvez utiliser Windows Scripting Host à partir de quelque chose comme un fichier .vbs pour lancer un programme et envoyer des clés à ce processus. Si vous utilisez une version de Windows incluant PowerShell 2.0 (Windows XP avec Service Pack 3, Windows Vista avec Service Pack 1, Windows 7, etc.), vous pouvez utiliser Windows Scripting Host en tant que un objet COM de votre script PS ou utilisez la classe Intereact de VB.

Les détails de la procédure à suivre n’entrent pas dans le cadre de cette réponse, mais vous pouvez trouver de nombreux exemples à l’aide des méthodes que je viens de décrire en effectuant une recherche sur SO ou Google.

edit: Juste pour vous aider à démarrer, vous pouvez regarder ici:

  1. Automatiser des tâches avec la méthode SendKeys de Windows Script Host
  2. n fil utile sur SendKeys
5
AdderallPowered