Нажмите клавиши клавиатуры с помощью командного файла

Я пытаюсь разработать пакетный файл, который может автоматически нажимать стрелку влево и стрелку вправо для n раз несколько раз с некоторой паузой между ними. Может ли кто-нибудь помочь мне в этом?

P.S: Я попытался установить программное обеспечение автоматической клавиатуры, но я не смог установить их с тех пор, как я был на работе. Мне нужна эта программа для работы на моем офисном ПК.

Ответы

Ответ 1

Ничего себе! Это значит, что вы должны изучить другой язык программирования, просто чтобы отправить две клавиши на клавиатуру? Есть более простые способы для достижения того же. : -)

Пакетный файл ниже - пример, который запускает другую программу (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}

Дополнительное объяснение этого решения см. в разделе GnuWin32 openssl s_client для подключения к серверу WebSphere MQ, не закрывающемуся на EOF, зависает

Ответ 2

Просто, чтобы быть ясным, вы хотите запустить программу из пакетного файла, а затем нажать клавишу набора файлов (в вашем примере, клавиши со стрелками) внутри этой запущенной программы?

Если это так, вы не сможете сделать это с помощью просто файла ".bat", поскольку запущенный остановит пакетный файл от продолжения до его завершения.

Моя первая рекомендация заключалась бы в том, чтобы использовать что-то вроде AutoHotkey или AutoIt, если это возможно, просто потому, что у них обоих есть активные форумы, где вы найдете бесчисленные примеры людей, запускающих приложения и отправляющих нажатия клавиш, не говоря уже о инструментах, чтобы просто "записывать" то, что Вы хотите сделать. Однако вы сказали, что это рабочий компьютер, и вы не сможете загрузить стороннюю программу.. но у вас нет опций.

Вы можете использовать Windows Scripting Host из чего-то вроде файла .vbs для запуска программы и отправки ключей к этому процессу. Если вы используете версию Windows, включающую PowerShell 2.0 (Windows XP с пакетом обновления 3 (SP3), Windows Vista с пакетом обновления 1 (SP1), Windows 7 и т.д.), Вы можете использовать Windows Scripting Host в качестве COM-объекта из вашего PS script или используйте класс VB Intereact.

Специфика того, как это сделать, выходит за рамки этого ответа, но вы можете найти множество примеров, используя методы, которые я только что описал, выполнив поиск в SO или Google.

edit: Чтобы помочь вам начать, вы можете посмотреть здесь: