Авторизация

Голосование

Какие разделы наполнять в первую очередь?
 
QIP + AutoIT PDF
Автор: TRSteep   
26.03.2009 06:07

При запуске QIP у меня спрашивает пароль от Jabber от QIP. т.к. пароли в программах я не храню. Но вводить пароль каджый раз мне поднадоело.. Решил это дело автоматизировать!Улыбка

Для этого решил использовать программу AutoIt. Не буду вдавать в подробности почему выбор пал на нее - просто она была и у меня был мало-мальский опыт общения с этой программой. Как мне кажеться писать скрипты не так тяжело, а при наличии хорошей тулзы для просмотра окошек (класс окна, компонентов, позиции текст и тд), а так же бесплатности самой программы - у нас достаточно мощное оружие для автоматизации!

Итак начнем!

 

Пишем AutoIT скрипт

 

  • Берем любой текстовый редактор (желательно с подсветкой AutoIT). Я например предпочитаю давно выбранный Notepad++(OpenSource)
  • Создаем новый документ и сразу сохраняем его с расширением .au3 (не забываем сохранять на всем протяжении процесса работыПодмигнуть
  • Пишем Run()- команда запуска программы и прописываем путь к .exe файлу QIP infeum - у меня это: "C:\Program Files\QIP Infium\infium.exe".
  • Теперь открывает утилитку для окошек: AutoIt v3 Window Information Tool.
  • Запускаем сам QIP. И наводим курсором на окно логина. В Утилитке написано: для заморозки окна жмите ctrl+F - так жмите, чего ждать?
  • Смотрим что Title у окна QIP Infium. Чтобы дождаться фокуса на это окно, а не писать пароль непойми куда нужна написать следующую команду: WinWaitActive("QIP Infium")

Теперь у нас программа запускает exe и ждет окна логина - чтож пора вводить пароль! (логин у меня сохраняется, но вы легко можете изменить чтобы и логин вводила сама программа, или даже проверяла тот ли логин введен Круто)

  • снова жмем ctrl+F для разморозки, наводим фокус на поле ввода пароля (хотя можно было это сделать сразу) и снова замораживаем!
  • для ввода текста используется команда ControlSetText() Давате посмотрим в справке ее параметры: ControlSetText ( "title", "text", "classnameNN", "new text" ). т.е. для того чтобы найти контрол мы может указать Title, текст контрола, имя класса, и текст для ввода
  • Заголовок окна тот же, контрол у нас без текста, а вот класс хорошо видно в тулзе для окошек: TInfuEdit.UnicodeClass1
  • Ну теперь пишем команду ControlSetText ( "QIP Infium", "", "TInfuEdit.UnicodeClass1", "" )

А теперь нужно кликнуть по кнопочке Войти!

  • Снова рыщем в справке. Узнаем что за это отвечает команда ControlClick. И передать ей надо: заголовок окна, текст кнопки, ее класс, какой клавишой мыши кликать, сколько раз.
  • Имя класса кнопки, ее текст (хотя это совсем не обязательно - итак видно же... ну так на всякий подумал яПодмигнуть)
  • Получается вот что: ControlClick ( "QIP Infium", "Войти", "TInfuBitBtn.UnicodeClass2", "left", "1")

Вроде все! В jabber мы вошли, но вот засада: асечный уин тоже используется у меня, и так же требует ввода пароля! Чтож это не проблема! Сейчас мы подождем это окошко и введем пароль и сюда ;)

  • Итак ждем окошка и снова смотрим его заголовок и он значится как: "Учётные записи"
  • значит ждать его надо так: WinWaitActive("Учётные записи")
  • опять используем утилитку для окошек для определения класса компонента для ввода пароля и оказывается он такой же! TInfuEdit.UnicodeClass1, можно скопировать предыдущий ввод пароля, только не забудте - у нас изменился заголовок окна!
  • итак получается вот что: ControlSetText ( "Учётные записи", "", "TInfuEdit.UnicodeClass1", "пароль" )
  • и не забываем таки сказать программе ОК, зная класс этого ОКея - TInfuBitBtn.UnicodeClass2
  • вот так вот: ControlClick ( "Учётные записи", "OK", "TInfuBitBtn.UnicodeClass2", "left", "1")
  • Теперь запускаем AutoIt v3 Script и убеждаемся что скрипт работает как надо!

Что же мы получили?

  1. Быстрый заход в jabber и ICQ
  2. Не нужность запоминания пароля
  3. Безопасность от троянов ворующих хранящийся пасс
  4. Научились писать простые скрипты автоматизации
  5. Убелисиь что Open Source наравне с мозгом вобще рулят ;)

Кто-то может сказать что это неудобно, ведь нужно каждый раз тыкать AutoIT, выбирать файл, в конце концов при использовании флешки не у каждого этого AutoIT есть - выход - используйте Aut2Exe: для перекомпиляции в exe (который кстати Касперский очень не любит...)

НО спорить с теми кто говорит, что это небезапасно - я не буду! Я согласен безопасность уменьшается, но можно хранить этот exe файл с зашифрованном контейнере (например если иметь несколько программ, где нужно вводить разный пароль это может быть удобным)

PS таки образом можно запускать не одно приложение, например создать файл для запуска браузера, почты, программ для общения и все что нужно для интернета одним махон и не вводя пароли. Возможно скоро проделаю это сам - ждите продолжений!

Обновлено 08.01.2010 10:49
 
sape

Разное