Показать полную графическую версию : Автоматизация нажатия клавиш
Tonny_Bennet
22-01-2011, 18:09
Здравствуйте.
Есть некоторая программа GateLocal. Приходится через некоторое время проводить в ней несложные однообразные манипуляции мышкой и ввод с клавиатуры. Есть необходимость автоматизировать данный процесс. Поддержки консольных команд у этой программы нет (информация от разработчиков). Попробовал воспользоваться программой autohotkey. В принципе интересная софтина, но почему-то ввод логина она обработать не может. В логах пишет что произошла ошибка (какая именно не пишет). Вот хотелось бы узнать может кто-то сталкивался с этим? Или может посоветуете другую программу?
madmasles
23-01-2011, 08:46
Есть некоторая программа GateLocal »
Про autohotkey не знаю, но, думаю, что с помощью AutoIt можно попробовать Вам помочь. Вы дайте ссылку на эту программу и напишите подробно, что нужно делать (какие кнопки нажимать, какие данные вводить, и т.д).
А как организовать нажатие клавиш (и комбинаций) без сторонних программ ? Средствами API ОС и соответсвующими командами...
А как организовать нажатие клавиш (и комбинаций) без сторонних программ ? » По моему всех проще на VBS. Пишется в блокноте, сохранили как .vbs и всё! Пример:
Set WshShell = CreateObject("WScript.Shell")
'Программно открыть меню "Пуск"
WSHShell.SendKeys "^{ESC}"
Подробнее тут (http://www.script-coding.com/WSH/WshShell.html#3.3.)
BigBoo, по твоему на AutoIt не так? Замени в своем предложении VBS на AutoIt, .vbs на .au3, получишь тоже самое
kaster, Так, но вопрос был о реализации без сторонних программ средствами Windows!
madmasles
24-01-2011, 00:57
но вопрос был о реализации без сторонних программ средствами Windows! »А какое отношение это имеет к теме AutoIt?
BigBoo, VBS - такое же стороннее средство, как и AutoIt, просто тебе его проинсталлировали в систему без твоего ведома.
Tonny_Bennet, есть такая замечательная штука - AutoIt Window Info, которая идет в комплекте с AutoIt. с помощью нее можешь узнать всю необходимую информацию о нужных тебе элементах управления нужного тебе окна. После, почитай справку на тему ControlClick. Потом уже можно будет подсказать более конкретно на предмет возникших ошибок, если таковые будут иметься
А какое отношение это имеет к теме AutoIt? » Вы правы, так ведь и вопрос был не по теме. Или предлагаете игнорировать такие вопросы? А с автором вопроса (MKN) абсолютно согласен, т.к. имел похожую проблему, сначала решал на AutoIt, но необходимость компиляции и невозможность изменит скрипт на других компах без установки AutoIt перевесила чашу весов в сторону VBS. Всё-таки вопрос темы об автоматизация нажатия клавиш, и как альтернатива, почему бы не отклониться в сторону. Так или иначе решать автору.
madmasles
24-01-2011, 02:21
Или предлагаете игнорировать такие вопросы? »Ну почему игнорировать. Наверняка есть тема по VBS, туда и направить.
Tonny_Bennet
24-01-2011, 14:40
дайте ссылку на эту программу и напишите подробно, что нужно делать (какие кнопки нажимать, какие данные вводить, и т.д). »
http://www.skd-gate.ru/index.php?nomer=93
Это программа, которая обслуживает контроллер магнитных ключей. У сотрудников компании есть магнитные карты и при прохождении проходной данные попадают в контроллер. Он запоминает порядка 4000 событий и через каждые пару дней приходится из контроллера скачивать инфу на компьютер.
Теперь о кнопках которые нужно нажимать:
Сначала нужно ввести имя пользователя и пароль..... в этом месте как раз и затык. И та прога, которой я изначально пытался пользоваться и vbs не помогают. Возможно там какая-то защита стоит от эмуляции нажатия клавиш.
Этот кусок кода у меня не работает.... точнее ничего не печатает
Set WshShell = CreateObject("WScript.Shell")
RetCode = WshShell.Run("notepad", 1)
WshShell.SendKeys "A"
Tonny_Bennet
24-01-2011, 15:29
Вобщем разобрался. Косяк был в паузах - программа не всегда отрабатывала. Написал скриптик. Попробую как он будет запускаться по расписанию.
Set WshShell = CreateObject("WScript.Shell")
RetCode = WshShell.Run("GateLocal.exe", 1)
WScript.Sleep 3000
WshShell.SendKeys "+(^)"
WshShell.SendKeys "Yfcnz"
WshShell.SendKeys "{ENTER}"
WScript.Sleep 1000
WshShell.SendKeys "{ENTER}"
WScript.Sleep 1000
'
'Изменяем на "Постоянно открыто"
WshShell.SendKeys "{DOWN}"
WScript.Sleep 1000
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WScript.Sleep 1000
WshShell.SendKeys "{ENTER}"
WshShell.SendKeys "{ENTER}"
WshShell.SendKeys "{ENTER}"
WshShell.SendKeys "{ENTER}"
'
'Качаем события
WScript.Sleep 1000
WshShell.SendKeys "{TAB}"
WScript.Sleep 1000
WshShell.SendKeys "{ENTER}"
WScript.Sleep 1000
WshShell.SendKeys "{ }"
WScript.Sleep 1000
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{ENTER}"
WshShell.SendKeys "{ENTER}"
WScript.Sleep 4000
WshShell.SendKeys "{ENTER}"
WshShell.SendKeys "{ESC}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{ENTER}"
'
'Изменяем на "Постоянно закрыто"
WshShell.SendKeys "{DOWN}"
WScript.Sleep 1000
WshShell.SendKeys "{TAB}"
WScript.Sleep 1000
WshShell.SendKeys "{ENTER}"
WshShell.SendKeys "{ENTER}"
WshShell.SendKeys "{ENTER}"
WshShell.SendKeys "{ENTER}"
'
'Выходим
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{ENTER}"
WshShell.SendKeys "{ENTER}"
madmasles
24-01-2011, 15:47
Tonny_Bennet,
Скачал ее по Вашей ссылке, установил, но запускаться она не хочет, требует Hasp ключ (или что-то типа того).
Попробуем помочь Вам по другому.
1. Вам надо скачать и установить AutoIt v3.3.6.1 (http://www.autoitscript.com/autoit3/downloads.shtml).
2. Как уже писал kaster:есть такая замечательная штука - AutoIt Window Info, которая идет в комплекте с AutoIt. с помощью нее можешь узнать всю необходимую информацию о нужных тебе элементах управления нужного тебе окна. »
3. Найдите файл, который запускает Ваше окно. Откройте окно. С помощью AutoIt Window Info посмотрите на вкладке Summary, как называются поля, куда Вам над ввести логин и пароль и кнопки, на которые надо будет нажимать.
4. Дальше примерно так:$sTitle = 'Заголовок Вашего окна'
$sLogin = 'Ваш логин.'
$sPass = 'Ваш пароль'
$sFile = @ProgramFilesDir (http://www.autoitscript.com/autoit3/docs/macros.htm#@programfilesdir) & '\GATELocal\Local.exe' ;полный путь к файлу, который открывает окно
;у Вас он может быть другой, я написал для примера.
;@ProgramFilesDir - макрос, путь к папке Program Files
Run (http://www.autoitscript.com/autoit3/docs/functions/Run.htm)($sFile) ;запускаем файл, который должен открыть окно
$hWindow = WinWait (http://www.autoitscript.com/autoit3/docs/functions/WinWait.htm)($sTitle, '', 5) ;ждем появления окна с заголовком $sTitle и любым текстом 5 секунд
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) Not (http://www.autoitscript.com/autoit3/docs/keywords.htm#Not) $hWindow Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then) ;если не дождались окна ($hWindow = 0)
MsgBox (http://www.autoitscript.com/autoit3/docs/functions/MsgBox.htm)(16, 'Ошибка', 'Нет такого окна')
Exit (http://www.autoitscript.com/autoit3/docs/keywords.htm#Exit) ;заканчиваем работу.
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
;если окно дождались, то $hWindow это идентификатор (Handle) этого окна.
ControlSetText (http://www.autoitscript.com/autoit3/docs/functions/ControlSetText.htm)($hWindow, '', 'Edit1', $sLogin)
;вставляем логин в поле Edit1. У Вас оно может быть другое.
;Его надо узнать с помощью AutoIt Window Info.
ControlSetText (http://www.autoitscript.com/autoit3/docs/functions/ControlSetText.htm)($hWindow, '', 'Edit2', $sPass)
;вставляем пароль в поле Edit2. См. комментарий выше
ControlClick (http://www.autoitscript.com/autoit3/docs/functions/ControlClick.htm)($hWindow, '', 'Button1')
;кликаем по кнопке Button1.См. комментарий выше
5. Если Вы правильно определили поля ввода и кнопки и у окна нет какой-либо защиты, то все должно работать. Если кликать надо еще по другим кнопкам, то образец, как это сделать, у Вас есть.
Удачи. :)
ИМХО, с помощью AutoIt это все сделать можно проще и надежнее.
Если Вы все же решите делать это с помощью VBS, то Вам лучше задавать вопросы в соответствующей ветке форума Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?s=&f=102&page=1&pp=16&sort=lastpost&order=desc&daysprune=-1&threadprefix=VBS%2FWSH%2FJS).
Tonny_Bennet
24-01-2011, 16:16
Я понял спасибо за помощь, будем ковыряться
Tonny_Bennet
25-01-2011, 11:56
По расписанию скрипт не запускается. Точнее приложение запускается но не отрабатывает. Т.е. я так думаю, что для эмуляции нажатия клавиш нужно быть влогиненным в с системе. Скажите пожалуйста с AutoIt дела обстоят также?
здраствуйте я тож решил написать "установщик" но пробую в первый раз и конечно появляются проблемы)) ну вот я прочитал вашу беседу и попробовал по премеру Tonny_Bennet)) ну я сохранил скрипт в vbs. и при открытии мне выдают:
Требуется обиект:"WshShell"(( что это за обиект ведь я указал обьект? помогите please!!)вот скрипт:
Set WhShell = CreateObject("WScript.Shell")
RetCode = WshShell.Run("ranger.exe")
WshShell.SendKeys "{ENTER}"
WshShell.SendKeys "{DOWN}"
WshShell.SendKeys "{ENTER}"
madmasles
27-01-2011, 15:56
jiorik,
Это раздел, посвященный AutoIt.
Вам лучше задавать вопросы в соответствующей ветке форума Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?s=&f=102&page=1&pp=16&sort=lastpost&order=desc&daysprune=-1&threadprefix=VBS%2FWSH%2FJS)
ну здесь тож рашают пробдемы со скриптами)) у меня ведь такой маленкий вопросик))там пока ищу подходящюю тему))ну спс и за отзыв! :Beer:
А какое отношение это имеет к теме AutoIt? »
Логичнее было бы заявленный вопрос об Автоматизация нажатия клавиш поместить в общую тему Программирование и автоматизация действий, а не конкретно в AutoIt. Для AutoIt, автонажатие клавиш, всего лишь частность из всех её обширных возможностей. Да и Скриптовые языки администрирования Windows тоже касаются этого постольку-поскольку...
Автоматизация нажатия клавиш - это совершенно отдельная тема (и оч. многих интересующая), хотя инструменты реализации могут быть очень разнообразными. И неплохо бы было собрать их все в одном месте , а не распыляться по куче разных тем... ИМХО
ps Собственно и сама эта тема "Автоматизация нажатия клавиш" , изначально была заявлена в другом месте, а сюда перенесена.
И похоже, что опять ошибочно...
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC