Нажмите клавиши клавиатуры с помощью командного файла
Я пытаюсь разработать пакетный файл, который может автоматически нажимать стрелку влево и стрелку вправо для 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: Чтобы помочь вам начать, вы можете посмотреть здесь: