Иногда надо отправить приложению какие-то нажатия на кнопки.
Примером может являться созданное письмо в
Outlook через командную строку.
Напомню. Я хочу отправить письмо из командной строки. Это частенько надо для отправки в определенное время определенного файла или при его возникновении в определенной папке.
Создавать письмо через аутлук мы научились из командной строки.
outlook.exe /c ipm.note /a "C:\!\music.wav" /m vvv@nnn.ru
А как нам теперь отправить это письмо?
Мы получаем вот такое окно.
Теперь каким-то раком надо нажать кнопку "Отправить"
К счастью, в Windows существуют комбинации клавиш для выполнения определенных операций. В частности, в outlook-е комбинация Ctrl+Enter отправляет письмо. Нам остается как-то ее отправить нужному окну.
Для этого установим себе
AutoIT AutoIt 3.3.6.1
Программа для автоматизации часто выполняемых действий в ОС Windows. Утилита позволяет повторять нажатия клавиш клавиатуры, перемещение и клики мышкой, манипуляции с окнами приложений, работу с буфером обмена и другие действия пользователя. Например, с помощью этой программы можно производить установку однотипных приложений. Для выполнения автоматических действий AutoIt создает текстовый сценарий, который использует функции и операторы VBScript и BASIC, а также некоторых других языков программирования. После создания программой специального управляющего скрипта, его можно скомпилировать в исполняемый файл, который будет работать в любой операционной системе семейства Windows
AutoIt 3.3.6.1
Latest version: v3.3.6.1
Updated: 16th April, 2010
Вот тут можно ее взять.
Download Я взял и сваял простейший скрипт, мне нужно было всего-то - отправить сочетание клавиш нужному окну.
; Сделать активным окошко сообщения. У меня русская версия стоит, сообщение будет создаваться именно с таким заголовком.
WinActivate("Без имени - Сообщение (HTML)")
; Дожидаемся активации окна
WinWaitActive("Без имени - Сообщение (HTML)")
; Немного подождем
AutoItSetOption("SendKeyDelay", 400)
; Отправляем комбинацию клавиш Ctrl+Enter
Send("^{ENTER}")
Далее, для упрощения работы в командной строке, я компилирую скрипт в выполнимый модуль. теперь я могу без запуска AutoIT выполнять данную операцию.
В данном случае, я назвал скомпилированный скрипт sendmail.exe и поместил в каталог с командным файлом.
B вот какой батничек вышел для отправки файла по нужному адресу.
rem Создаем письмо с вложением
outlook.exe /c ipm.note /a "C:\!\music.wav" /m vvv@nnn.ru
rem Собственно запускаем скрипт, который мы только что скомпилировали в отдельную программу
sendmail.exe
Вуаля, всё готово, письмо отправилось. Главное, чтобы на момент отправки, сам Outlook был запущен, иначе письмо попадет в папку "Исходящие" и будет ждать момента, когда будет запущен
Outlook.
PS: В IIS 6 появилась возможность отправлять почту без клиентов, с помощью VBScript и при наличии IIS с установленной службой SMTP.
Короче, очередная пушка размером со слона для охоты за мухами. Интересующимся -
ссылка вот тут. PS2: Собственно эту статейку я писал не столько для показа автоматизации почты, сколько для представления средства автоматизации на простейшем примере.