Простейшие действия в AutoHotkey.
1.
Запустить
программу “Блокнот” – сочетание клавиш Control-Alt-N:
^!n::Run notepad
Всё очень просто.
Основная клавиша N и ее модификаторы ^ (Control) и ! (Alt). Модификатором клавиши
Windows будет символ #. Использую данный тип строк для запуска различных
приложений. Часто надо куда-то временно скопировать текст из буфера обмена.
Блокнот для этого подходит идеально.
2. Раскрыть текст из аббревиатуры:
::btw::By the way
Тут всё ясно без пояснений. Набираем в
составляемом письме в нужном месте сочетание клавиш btw и получаем вместо нее фразу целиком. Но этот текст в одну строку. Очень часто использую такую подмену.
Например, мой принцип ведения дел (http://users.livejournal.com/_evgeni_/97222.html)
предполагает, что имена проектов в Outlook и на жестком диске состоят из имени продавца, с которым я
работаю на этом проекте, даты и краткой характеристики (названия) проекта. Есть
продавцы, с которыми я работаю постоянно. Не у каждого фамилия Иванов.
Допустим, есть продавец Суходрищев. Каждый раз писать его фамилию надоест.
Делаем так:
::sdr::Sukhodrischev
Можно, конечно, вставлять текст и на
русском.
3. Как сделать в несколько вставку нескольких строк кода из аббревиатуры? Очень просто. Нужно заключить вставляемый текст в скобки. Следующий код использую постоянно. Для запроса квотации, необходимо отправить письмо с подготовленной конфигурацией в определенный отдел. Каждый раз писать стандартные слова с просьбой подготовить квотацию устаешь. Поэтому используем стандартный текст:
::ncq:: (Hello Colleagues!Please issue the quotation(s) attached.Thank you!)
Вот и всё. Чем еще удобен такой вариант, он
не зависит от программы, в которой надо вставить текст. Вначале, я отсылал
запрос письмом. И текст вставлялся в его тело. Затем процедура изменилась,
запросы идут через портал. Но мне не потребовалось ничего менять. Если бы я
написал макрос на VBA в Outlook, он был бы бесполезен для портала.
Легкое программирование в AutoHotkey.
Итак, это работа с без программирования. Усложним задачу:
1.
Проверяем, запущен ли уже Блокнот,
и если нет то запускаем, а если да – выводим его окно на передний план:
^!n::
IfWinExist Untitled - Notepad
WinActivate
else
Run Notepad
return
Просто, зато как удобно.
2.
Задача
по-сложнее. Нужно вставить в текст дату в формате SQL YYYY-MM-DD. Нет ничего
проще:
^#x::
FormatTime, CurrentDate,, yyyy'-'MM'-'dd
; форматируем текущую дату нужным нам образом. CurrentDate – встроенная переменная.
SendInput %CurrentDate%
; встравляем дату
Return
; как вы уже поняли, символ “;” означает комментарий.
Итак, при нажатии
Control-Win-X будет вставлена дата.
3. Авторизуемся на сайте. Частая задача? Очень даже.
^#p:: SendInput emailname@domain.com Sleep 200 SendInput {TAB} Sleep 200 SendInput very-long-and-complex-passwordReturn
Тут, конечно, есть нюанс с безопасностью,
ваш пароль хранится в текстовом файле в открытом виде. Если это вас напрягает,
ничего не мешает, допустим, слегка «зашифровать» его например по BASE64. Уже не
так очевидно. Задержки я ставлю на всякий случай, чтобы все переходы и вводы
успели отработать.
4.
Поиск по заданному сайту Гуглом. Я
очень часто использую этот Гугл для поиска информации на корпоративном сайте.
Предполагается, что искомое словосочетание находится в буфере обмена, а курсор
установлен либо в поисковом строке браузера, либо в строке поиска самого сайта
google.com:
^#s::
SendInput site:hp.com {SPACE}
SendInput % Clipboard
Return
5.
Мне часто
приходят письма с предложением зарегистрироваться на вебинар. Форма регистрации стандартная для всех
сессий: поля Имя, фамилия, подразделение, регион. Часть их
в виде текстовых строк, часть в виде комбобоксов. Данный пример, возможно,
менее понятен, поставлю комментарии:
Send Name ; вводим имя
Sleep(200)
Send {TAB} ; переходим на следующий объект формы - фамилияSend Surname
Sleep 200Send {TAB} ; следующий объект формы – электронная почтаSend name.surname@domain.comSleep 200Send {TAB}" ; следующее поле – в виде комбобокса (выпадающего списка). Нужное нам значение – третье в списке. Два раза «нажимаем» клавишу ВнизSend {DOWN}{DOWN}
Sleep 200Send {TAB} ; новая строка. Страна (Russia). Список длинный идти по нему клавишей Вниз неудобно. Используем первую букву названия страны. Россия в моем списке третья страна на букву R. Поэтому нажимаем “R” 3 раза.
Send RRR
Это не
специализированная программа-заполняльщик, которая умеет распознавать поля
формы и вставлять правильные значения. Но мне не хочется иметь запущенными
дополнительные приложения с узкой специализацией. Как я говорил, формы у меня
одни и те же. Поэтому предложенный скрипт решает все мои проблемы.
Скрипты для AutoIt.
Так как я пару лет
использовал AutoIt, то у меня изначально скрипты были написаны для нее.
Некоторые я перенес в AutoHotkey. Но большинство так и
осталось в фомате AutoIt. Никак руки не дойдут. Поэтому я просто запускаю их
через команду Run, как в примере с Блокнотом. Конечно же, ассоциации с
расширениями файлом у меня настроены. Итак:
1. Задача – преобразовать несколько строк в одну. Причины появления. Документы на нашем сайте идут с уникальными идентификаторами в качестве названий файлов. Но абсолютно не понятно, что внутри, пока не откроешь файл. Поэтому, когда я сохраняю документы к себе на жёсткий диск, я добавляю в название файла заголовок документа. Но в PDF-файле название написано в несколько строк. И если я просто все их выделю, скопирую, а потом попытаюсь вставить в название файла, то у меня появится только первая строка многострочного названия. А мне нужно название целиком. Поэтому и появился данный скрипт:
$ClipBoardValue = ClipGet()
if (@error <> 0) Then
MsgBox(0, "Отказываюсь работать", "В буфере обмена не текст!")
Exit
EndIf
while StringInStr ( $ClipBoardValue, Chr(13)) > 0
$ClipBoardValue = StringReplace ( $ClipBoardValue, Chr(13), " ")
WEnd
while StringInStr ( $ClipBoardValue, Chr(10)) > 0
$ClipBoardValue = StringReplace ( $ClipBoardValue, Chr(10), " ")
WEnd
ClipPut (StringStripWS ( $ClipBoardValue, 7))
Send("^v")
Выискиваем перевод
каретки и удаляем, заменив его пробелом.
2. Скрипт по-сложнее. Помните, я говорил о стандартных запросах на выпуск квотаций. Так вот, в AutoIt у меня был более прогрессивный скрипт. Он создавал письмо в Outlook, заполнял поля адресата, темы письма, вставлял сам текст запроса и, наконец, предлагал мне прикрепить файл (проверено на Office 2010):
; Запрашиваем номер проекта. Он необходим для работы команды, готовящей квотации$ProjectID=InputBox("Введите идентификатор проекта", "Номер проекта?"); Если номер не введен, то уточням, это ошибка, или так и задуманоif $ ProjectID ="" Then $WOProjectID =MsgBox(4, "Продолжить без номера", "Уверены?") if $ WOProjectID =7 Then Exit EndIfEndIf; Проверяем, запущен ли OutlookWinActivate("[CLASS:rctrl_renwnd32]", "")if WinActive("[CLASS:rctrl_renwnd32]")=0 Then MsgBox(4, "Ошибка", "Outlool не запущен?") ExitEndIf; Создаем новое письмоSend("^n")Sleep(200); Добавляем основного адресатаSend("main.email@domain.com{TAB}{TAB}")Sleep(200); Добавляем другого адресата в копиюSend("{TAB}");Send("copy.email@domain.com{TAB}{TAB}")Sleep(200); подбираем правильный текст для заголовка (был ли введен номер проектаif $ ProjectID = "" Then Send("Project without Project ID (it will be later)")Else Send("Project with Project ID " & $ProjectID)EndIfSend("{TAB}"); Пишем основное содержание письмаSend("Hello colleagues{!}{ENTER}{ENTER}")Send("Please generate the quotation{.}{ENTER}{ENTER}")Send("Thank you{!}")Sleep(200); Открываем диалоговое окно для прикрепления вложенийSend("!H")Sleep(50)Send("af")
Всё. Ничего страшного
и сложного, а экономия времени очень и очень существенная. А главное изчезают
многие монотонные однообразные действия.
Какие еще есть идеи по
использованию автоматизаторов.
- Заполнение форм в приложениях, а не только веб-форм. У меня несколько таких скриптов создано, просто выкладывать их тут бесполезно. Программы узкоспециалные.
- Используя COM, возможно заполнение даже динамически создаваемых форм, если есть возможность идентифицировать поля по имени или каким-либо другим способом.
- Рутинные файловые операции по переименованию, удалению, копированию.
- Управление через COM другими приложениями, например, MS Word и MS Excel.
- И много чего еще
Надеюсь,
представленная здесь информация будет вам полезна, заинтересует пытливые умы,
желающие облегчить и разнообразить свой рабочий (и не только) процесс.
Комментариев нет:
Отправить комментарий