Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Автоматизация нажатия клавиш (http://forum.oszone.net/showthread.php?t=197332)

Tonny_Bennet 22-01-2011 18:09 1594754

Автоматизация нажатия клавиш
 
Здравствуйте.
Есть некоторая программа GateLocal. Приходится через некоторое время проводить в ней несложные однообразные манипуляции мышкой и ввод с клавиатуры. Есть необходимость автоматизировать данный процесс. Поддержки консольных команд у этой программы нет (информация от разработчиков). Попробовал воспользоваться программой autohotkey. В принципе интересная софтина, но почему-то ввод логина она обработать не может. В логах пишет что произошла ошибка (какая именно не пишет). Вот хотелось бы узнать может кто-то сталкивался с этим? Или может посоветуете другую программу?

madmasles 23-01-2011 08:46 1595186

Цитата:

Цитата Tonny_Bennet
Есть некоторая программа GateLocal »

Про autohotkey не знаю, но, думаю, что с помощью AutoIt можно попробовать Вам помочь. Вы дайте ссылку на эту программу и напишите подробно, что нужно делать (какие кнопки нажимать, какие данные вводить, и т.д).

MKN 23-01-2011 13:11 1595308

А как организовать нажатие клавиш (и комбинаций) без сторонних программ ? Средствами API ОС и соответсвующими командами...

BigBoo 23-01-2011 22:41 1595722

Цитата:

Цитата MKN
А как организовать нажатие клавиш (и комбинаций) без сторонних программ ? »

По моему всех проще на VBS. Пишется в блокноте, сохранили как .vbs и всё! Пример:
Код:

Set WshShell = CreateObject("WScript.Shell")

'Программно открыть меню "Пуск" 
WSHShell.SendKeys "^{ESC}"

Подробнее тут

kaster 24-01-2011 00:20 1595792

BigBoo, по твоему на AutoIt не так? Замени в своем предложении VBS на AutoIt, .vbs на .au3, получишь тоже самое

BigBoo 24-01-2011 00:44 1595807

kaster, Так, но вопрос был о реализации без сторонних программ средствами Windows!

madmasles 24-01-2011 00:57 1595814

Цитата:

Цитата BigBoo
но вопрос был о реализации без сторонних программ средствами Windows! »

А какое отношение это имеет к теме AutoIt?

kaster 24-01-2011 01:36 1595827

BigBoo, VBS - такое же стороннее средство, как и AutoIt, просто тебе его проинсталлировали в систему без твоего ведома.
Tonny_Bennet, есть такая замечательная штука - AutoIt Window Info, которая идет в комплекте с AutoIt. с помощью нее можешь узнать всю необходимую информацию о нужных тебе элементах управления нужного тебе окна. После, почитай справку на тему ControlClick. Потом уже можно будет подсказать более конкретно на предмет возникших ошибок, если таковые будут иметься

BigBoo 24-01-2011 02:07 1595834

Цитата:

Цитата madmasles
А какое отношение это имеет к теме AutoIt? »

Вы правы, так ведь и вопрос был не по теме. Или предлагаете игнорировать такие вопросы? А с автором вопроса (MKN) абсолютно согласен, т.к. имел похожую проблему, сначала решал на AutoIt, но необходимость компиляции и невозможность изменит скрипт на других компах без установки AutoIt перевесила чашу весов в сторону VBS. Всё-таки вопрос темы об автоматизация нажатия клавиш, и как альтернатива, почему бы не отклониться в сторону. Так или иначе решать автору.

madmasles 24-01-2011 02:21 1595837

Цитата:

Цитата BigBoo
Или предлагаете игнорировать такие вопросы? »

Ну почему игнорировать. Наверняка есть тема по VBS, туда и направить.

Tonny_Bennet 24-01-2011 14:40 1596142

Цитата:

Цитата madmasles
дайте ссылку на эту программу и напишите подробно, что нужно делать (какие кнопки нажимать, какие данные вводить, и т.д). »

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 1596180

Вобщем разобрался. Косяк был в паузах - программа не всегда отрабатывала. Написал скриптик. Попробую как он будет запускаться по расписанию.
Код:

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 1596194

Tonny_Bennet,
Скачал ее по Вашей ссылке, установил, но запускаться она не хочет, требует Hasp ключ (или что-то типа того).
Попробуем помочь Вам по другому.
1. Вам надо скачать и установить AutoIt v3.3.6.1.
2. Как уже писал kaster:
Цитата:

Цитата kaster
есть такая замечательная штука - AutoIt Window Info, которая идет в комплекте с AutoIt. с помощью нее можешь узнать всю необходимую информацию о нужных тебе элементах управления нужного тебе окна. »

3. Найдите файл, который запускает Ваше окно. Откройте окно. С помощью AutoIt Window Info посмотрите на вкладке Summary, как называются поля, куда Вам над ввести логин и пароль и кнопки, на которые надо будет нажимать.
4. Дальше примерно так:
Код:

$sTitle = 'Заголовок Вашего окна'
$sLogin = 'Ваш логин.'
$sPass = 'Ваш пароль'
$sFile = @ProgramFilesDir & '\GATELocal\Local.exe' ;полный путь к файлу, который открывает окно
;у Вас он может быть другой, я написал для примера.
;@ProgramFilesDir - макрос, путь к папке Program Files
Run($sFile) ;запускаем файл, который должен открыть окно
$hWindow = WinWait($sTitle, '', 5) ;ждем появления окна с заголовком $sTitle и любым текстом 5 секунд
If Not $hWindow Then ;если не дождались окна ($hWindow = 0)
    MsgBox(16, 'Ошибка', 'Нет такого окна')
    Exit ;заканчиваем работу.
EndIf
;если окно дождались, то $hWindow это идентификатор (Handle) этого окна.
ControlSetText($hWindow, '', 'Edit1', $sLogin)
;вставляем логин в поле Edit1. У Вас оно может быть другое.
;Его надо узнать с помощью AutoIt Window Info.
ControlSetText($hWindow, '', 'Edit2', $sPass)
;вставляем пароль в поле Edit2. См. комментарий выше
ControlClick($hWindow, '', 'Button1')
;кликаем по кнопке Button1.См. комментарий выше

5. Если Вы правильно определили поля ввода и кнопки и у окна нет какой-либо защиты, то все должно работать. Если кликать надо еще по другим кнопкам, то образец, как это сделать, у Вас есть.
Удачи. :)
ИМХО, с помощью AutoIt это все сделать можно проще и надежнее.

Если Вы все же решите делать это с помощью VBS, то Вам лучше задавать вопросы в соответствующей ветке форума Скриптовые языки администрирования Windows.

Tonny_Bennet 24-01-2011 16:16 1596222

Я понял спасибо за помощь, будем ковыряться

Tonny_Bennet 25-01-2011 11:56 1596753

По расписанию скрипт не запускается. Точнее приложение запускается но не отрабатывает. Т.е. я так думаю, что для эмуляции нажатия клавиш нужно быть влогиненным в с системе. Скажите пожалуйста с AutoIt дела обстоят также?

jiorik 27-01-2011 15:43 1598443

здраствуйте я тож решил написать "установщик" но пробую в первый раз и конечно появляются проблемы)) ну вот я прочитал вашу беседу и попробовал по премеру 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 1598455

jiorik,
Это раздел, посвященный AutoIt.
Цитата:

Вам лучше задавать вопросы в соответствующей ветке форума Скриптовые языки администрирования Windows

jiorik 27-01-2011 19:11 1598608

ну здесь тож рашают пробдемы со скриптами)) у меня ведь такой маленкий вопросик))там пока ищу подходящюю тему))ну спс и за отзыв! :Beer:

MKN 29-01-2011 14:47 1599826

Цитата:

Цитата madmasles
А какое отношение это имеет к теме AutoIt? »

Логичнее было бы заявленный вопрос об Автоматизация нажатия клавиш поместить в общую тему Программирование и автоматизация действий, а не конкретно в AutoIt. Для AutoIt, автонажатие клавиш, всего лишь частность из всех её обширных возможностей. Да и Скриптовые языки администрирования Windows тоже касаются этого постольку-поскольку...

Автоматизация нажатия клавиш - это совершенно отдельная тема (и оч. многих интересующая), хотя инструменты реализации могут быть очень разнообразными. И неплохо бы было собрать их все в одном месте , а не распыляться по куче разных тем... ИМХО

ps Собственно и сама эта тема "Автоматизация нажатия клавиш" , изначально была заявлена в другом месте, а сюда перенесена.
И похоже, что опять ошибочно...


Время: 14:26.

Время: 14:26.
© OSzone.net 2001-