Функція Send
Емулює натискання кнопок в активному вікні.
Send ("keys" [, flag = 0])
| keys | Послідовність клавіш. |
| flag | [необов'язковий]Змінює інтерпретацію параметраkeys: 0 - (за замовчуванням), текст містить спеціальні символи, такі як + та !, що вказують на натискання Shift та Alt. 1 - клавіші такі (спец-символи <>^+! як простий текст). |
AutoIt може емулювати натискання всіх символів ASCII та додаткових ASCII символів (0-255), щоб відправити символи UNICODE ви повинні використовувати опцію "ASC" та код символу, який потрібно емулювати (див. у таблиці нижче).
Синтаксис команди Send аналогічний однойменній ScriptIt і команді "SendKeys" Visual Basic. Символи емулюються як є, крім наступних:
'!' Це вказує AutoIt емулювати клавішу Alt, тому Send ( "This is text!a" ) виконає введення тексту "This is text" і натисне "Alt+a".
Зверніть увагу: деякі програми дуже розбірливі у регістрі символів та клавіш Alt, тобто. "! A" відрізняється від "! a". Перший емулює Alt+Shift+A, другий Alt+a. Якщо ви сумніваєтеся, використовуйте нижній регістр символів!
'+' Це вказує AutoIt емулювати клавішу Shift, тому Send ( "Hell+o" ) виконає введення тексту "HellO". Send ( "!+a" ) емулює натискання "Alt+Shift+a".
'^' Це вказує AutoIt емулювати клавішу Ctrl, тому Send ( "^!a" ) емулює натискання "Ctrl+Alt+a".
Зверніть увагу: деякі програми дуже розбірливі у регістрі символів та клавіш Ctrl, тобто. "^A" відрізняється від "^a". Перший емулює Ctrl+Shift+A, другий Ctrl+a. Якщо ви сумніваєтеся, використовуйте нижній регістр символів!
'#' "Решітка" тепер емулює клавішуWindows; тому, Send ( "#r" ) емулює натискання Win+r, який запускає діалогове вікно "Виконати".
Ви можете використовувати SendCapslockMode, щоб вимкнути CAPS LOCK перед виконанням функції Send та відновити після виконання. Однак, якщо користувач утримує клавішу Shift, коли виконується функція Send, то текст може бути емульований у верхньому регістрі. Один із способів обходу цієї проблеми - Send ( " " ) перед наступним викликом Send.
Деякі клавіатури, наприклад Чеська, посилають різні символи під час використання клавіші Shift у включеному та вимкненому стані Caps Lock. Реалізація Send у AutoIt така, що символи У ВЕРХНОМУ РЕЄСТРІ відсилаються так, якби був натиснутий Shift, так що воно не буде працювати .
Деякі спец-клавіші можуть емульовані, якщо поміщені у фігурні дужки:
(Коли використовується двозначний код ASCII ви повинні підставити на початок 0, інакше буде використана застаріла кодова сторінка 437).
Щоб емулювати символ UNICODE, введіть код символу (десятковий або шістнадцятковий), наприклад, це емулює китайський символ
Поодиноку емуляцію можна повторити, наприклад:
Send (""); Емулює натискання клавіші Del 4 рази Send (""); Емулює натискання клавіші 'S' 30 разів Send ("+"); Емулює натискання Shift+Tab 4 рази
Клавіша емулюється не менше одного разу, навіть якщо вказано 0 повторів.
Утримувати клавішу в натиснутому стані (зазвичай корисно лише для ігор)
Send (""); Утримувати клавішу A натиснутою Send ( "" ) ;Відпустити клавішу A
Встановлює стан клавіш CapsLock, NumLock або ScrollLock
Send ( " " ) ;Включає NumLock Send ( " " ) ;ВимикаєCapsLock Send ( " " ) ;Переключає стан ScrollLock
Якщо ви хочете вказати кількість натискань у змінній, спробуйте
Якщо ви хочете емулювати ASCII символ "A" чотири рази, спробуйте
Більшість клавіатур ноутбуків мають спеціальну клавішу Fn. Ця клавіша не може бути емульована.
Примітка: якщо параметрflagдорівнює 1, інтерпретація спецсимволів у параметріkeysбуде відключена. Це корисно, якщо ви хочете надіслати текст, скопійований зі змінної, і надіслати текст саме так, як він написаний.
Send дуже корисна тому, що навігація Windows може здійснюватися без використання миші. Наприклад, відкрийте "Властивості папки" (в панелі керування) і спробуйте виконати таке:
| Send ( " " ) | Перейти до наступного елемента керування (кнопка, checkbox тощо) |
| Send ("+") | Перейти до попереднього елемента керування. |
| Send ("^") | Перейти до наступної вкладки (на вкладках діалогового вікна) |
| Send ("^+") | Перейти до попередньої вкладки. |
| Send ( " " ) | Можна використовувати для перемикання прапорця або натискання кнопки. |
| Send ( " " ) | Встановлює галочку (Якщо це є справжній checkbox.) |
| Send ( " " ) | Знімає галочку. |
| Send ( " " ) | Розкриває дерево папки SysTreeView32. |
При запуску скрипта на віддаленому комп'ютері через програму, таку як psexec (www.sysinternals.com) або beyondexec (www.beyondlogic.org) необхідно, особливо при надсиланні данихпрограму запущену скриптом з функцією Run, використовуватиControlSendабо інші функції ControlXXX, щоб безпосередньо взаємодіяти з елементами керування. Емуляція не спрацює навіть із Opt("SendAttachMode",1). Використання ключа -s під час передачі може дозволити більше прав на віддаленому комп'ютері.
Opt("SendKeyDelay". ) змінює тривалість паузи між емульованими натисканнями клавіш. Opt("SendKeyDownDelay". ) змінює тривалість натиснутого стану клавіші, перш ніж її відпустити. Встановіть обидва параметри "SendKeyDelay" і "SendKeyDownDelay" рівним 0, щоб повністю усунути всі затримки під час емуляції натискань. Це може знадобитися за певних обставин, наприклад, при блокуванні системи ("#l") це може бути необхідно для усунення затримок, щоб захистити клавішу WIN від натиснутого стану.
; Емуляція натискання комбінації клавіш Win+R ; Send("#r") Send ("#к"); якщо українська мова за умовчанням під час завантаження OS, то замість "#r" потрібно "#к", або у скрипті тимчасово перемикати на англомовну розкладку.
; в англомовному прикладі вікно називається Run $hWnd = WinWait ( "Запуск програми" , "" , 5 ) If Not $hWnd Then MsgBox ( 4096 , 'Повідомлення' , 'Вікно не знайдено, завершуємо роботу скрипта') Exit EndIf Sleep ( 100 )
; Емуляція введення тексту notepad.exe та натискання Enter Send ("notepad.exe")
; Очікування 5 секунд до появи вікна блокнота $hWnd = WinWait ( "[CLASS:Notepad]" , "" , 5 ) If Not $hWnd Then MsgBox ( 4096 , 'Повідомлення' , 'Вікно не знайдено, завершуємо роботу скрипту') Exit EndIf
Send ( "Сьогоднішня дата і час")
; Закриває блокнот. WinClose ($ hWnd)
; При закритті з'явиться вікно зпропозицією зберегти файл, classname викликуваного вікна "#32770", емулюємо натискання "TAB" для переміщення фокусу на другу кнопку та "ENTER", щоб відмовитися від збереження. WinWaitActive ( "[CLASS:#32770]" ) Sleep ( 500 ) Send ( " " )