функция за изпращане
Емулира натискания на клавиши в активния прозорец.
Изпрати ("ключове" [, флаг = 0])
ключове | Последователността от клавиши за натискане. |
знаме | [по избор]Променя интерпретацията на параметъраkeys: 0 - (по подразбиране), текстът съдържа специални знаци като + и !, за да укаже Shift и Alt. 1 - клавиши както са (специални знаци <>^+! като обикновен текст). |
AutoIt може да емулира всички ASCII знаци и допълнителни ASCII знаци (0-255), за да изпратите UNICODE знаци, трябва да използвате опцията "ASC" и кода на знака, който ще се емулира (вижте таблицата по-долу).
Синтаксисът на командата Send е подобен на този със същото име в ScriptIt и командата "SendKeys" във Visual Basic. Символите се емулират така, както са, с изключение на следното:
'!' Това казва на AutoIt да емулира клавиша Alt, така че Send („Това е текст!a“) ще напише „Това е текст“ и след това ще натисне „Alt+a“.
Моля, обърнете внимание, че някои програми са много придирчиви към регистъра на буквите и клавишите Alt, т.е. "!A" е различно от "!a". Първият емулира Alt+Shift+A, вторият Alt+a. Когато се съмнявате, използвайте малки букви!
'+' Това казва на AutoIt да емулира клавиш Shift, така че Send ( "Hell+o" ) ще направи въвеждането на текст "HellO". Изпращане ( "!+a") емулира натискане на "Alt+Shift+a".
'^' Това казва на AutoIt да емулира клавиша Ctrl, така че Send ( "^!a") емулира натискането на "Ctrl+Alt+a".
Моля, обърнете внимание, че някои програми са много придирчиви към регистъра на буквите и клавишите Ctrl, т.е. „^A“ е различно от „^a“. Първият емулира Ctrl+Shift+A, вторият Ctrl+a. Когато се съмнявате, използвайте малки букви!
'#' Ключът хеш вече емулира ключпрозорци; следователно Send ( "#r" ) емулира натискане на Win+r, което стартира диалоговия прозорец Run.
Можете да използвате SendCapslockMode, за да деактивирате CAPS LOCK, преди да изпълните функцията за изпращане, и да я възстановите след изпълнението. Въпреки това, ако потребителят задържи клавиша Shift, докато се изпълнява функцията за изпращане, текстът може да бъде емулиран в главни букви. Един начин за заобикаляне на този проблем е да изпратите ( " " ) преди следващото извикване на Изпрати.
Някои клавиатури, като чешката, изпращат различни знаци, когато използвате клавиша Shift с включен и изключен Caps Lock. Имплементацията на Send в AutoIt е такава, че ГЛАВНИ букви се изпращат, сякаш е натиснат Shift, така ченяма да работи.
Някои специални ключове могат да бъдат емулирани, ако са затворени във фигурни скоби:
(Когато се използва 2-цифрен ASCII код, трябва да замените водещата 0, в противен случай ще се използва остарялата кодова страница 437.)
За да емулирате UNICODE знак, въведете кода на знака (десетичен или шестнадесетичен), например това емулира китайския символ
Единична емулация може да се повтори, например:
Изпрати(""); Емулира натискане на клавиш Del 4 пъти Изпрати ( " " ) ; Емулира натискане на клавиша 'S' 30 пъти Изпрати ( " + " ) ; Емулира натискане на Shift+Tab 4 пъти
Ключът се емулира поне веднъж, дори ако са зададени 0 повторения.
Задръжте натиснат клавиш (обикновено полезно само за игри)
Изпрати(""); Задръжте натиснат клавиша A Изпрати ( "") ; Освободете клавиша A
Задава състоянието на клавишите CapsLock, NumLock или ScrollLock
Изпрати ( " " ); Включи NumLock Изпрати ( " " ); ИзключиCapsLock Изпращане ( " " ); Превключва състоянието на ScrollLock
Ако искате да посочите броя кликвания в променлива, опитайте
Ако искате да емулирате ASCII знака "A" четири пъти, опитайте
Повечето клавиатури на лаптопи имат специален клавиш Fn. Този ключ не може да бъде емулиран.
Забележка: ако параметърътflagе равен на 1, тогава интерпретацията на специални символи в параметъраkeysще бъде деактивирана. Това е полезно, ако искате да изпратите текста, копиран от променливата, и да изпратите текста точно както е написан.
Изпращането е много полезно, защото Windows може да се навигира без използване на мишка. Например отворете Опции за папка (в контролния панел) и опитайте следното:
изпрати ( " " ) | Преминаване към следващата контрола (бутон, квадратче за отметка и т.н.) |
Изпрати ( " + " ) | Преминете към предишния контрол. |
Изпрати ( "^ ") | Отидете на следващия раздел (в разделите на диалоговия прозорец) |
Изпрати ( " ^+ " ) | Отидете на предишния раздел. |
изпрати ( " " ) | Може да се използва за превключване на квадратче за отметка или щракване върху бутон. |
изпрати ( " " ) | Поставя квадратче за отметка (ако това е истинско квадратче за отметка.) |
изпрати ( " " ) | Премахва отметките. |
изпрати ( " " ) | Разширява дървото на папката 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 ; Изпрати("#r") Изпрати ("#r"); ако българският език е по подразбиране при зареждане на ОС, тогава вместо "#r" трябва "#k", или временно превключете на английската подредба в скрипта.
; в английския пример прозорецът се нарича Run $hWnd = WinWait ( "Стартиране на програмата" , "" , 5 ) If Not $hWnd Then MsgBox ( 4096 , 'Message' , 'Window not found, exit script' ) Exit EndIf Sleep ( 100 )
; Емулирайте въвеждане на текст в notepad.exe и натиснете Enter Изпрати ("notepad.exe " )
; Изчакайте 5 секунди, за да се появи прозорецът на бележника $hWnd = WinWait ( "[CLASS:Notepad]" , "" , 5 ) Ако не $hWnd Тогава MsgBox ( 4096 , 'Съобщение' , 'Прозорецът не е намерен, изход от скрипта' ) Изход EndIf
Изпращане ("Днешната дата и час")
; Затваря бележника. WinClose ($hWnd)
; При затваряне ще се появи прозорец спредлагаме да запазим файла, classname на извикания прозорец "#32770", ние емулираме натискане на "TAB", за да преместим фокуса към втория бутон и "ENTER", за да откажем запазването. WinWaitActive ( "[CLASS:#32770]" ) Заспиване ( 500 ) Изпращане ( " " )