Send-Keys

Небольшая функция — обёртка для SendKeys, те кто работал с vbscript наверняка узнают🙂 Позволяет автоматизировать графические приложения методом имитации нажатий на клавиши…

function Send-Keys ([string]$Window; [int]$Interval=100) #Устанавливаем аргументы и значение по умолчанию для $interval
{
    begin #Блок begin выполняется 1 раз в начале скрипта
    {
        $shell = new-object -com WScript.Shell #Создаем объект WScript.Shell
        if ($window) #Если переменная $window не пуста
        {
            write-host "Waiting for window '$Window'" #Пишем на консоль состояние
            while (!$shell.AppActivate($Window)) #Пока не активируем указанное окно...
            {
                start-sleep -milliseconds $Interval #...Ждем заданное время
            }
        }
    }

    process #Блок process выполняется для каждого объекта пришедшего через конвеер |, текущий объект доступен в переменной $_
    {
        write-host "Sending keys '$_'" #Пишем на консоль
        $shell.SendKeys($_) #Нажимаем клавиши
        start-sleep -milliseconds $Interval #Ждем
    }
}

Используется просто: клавиши берутся из пайпа, в качестве аргумента можно указать текст окна в котором эти клавиши надо нажимать (Скрипт будет ждать пока это окно не откроется и сделает его активным).

Например так:

PS D:\PowerShell> calc; "486 {+} 1024 / 4 = ^c %{F4}".split()| Send-Keys "Калькулятор"
Waiting for window 'Калькулятор'
Sending keys '486'
Sending keys '{+}'
Sending keys '1024'
Sending keys '/'
Sending keys '4'
Sending keys '='
Sending keys '^c'
Sending keys '%{F4}'
PS D:\PowerShell> notepad.exe; "The result is: ","^v","^{LEFT}","^+{RIGHT}" | Send-Keys "Untitled"
Waiting for window 'Untitled'
Sending keys 'The result is: '
Sending keys '^v'
Sending keys '^{LEFT}'
Sending keys '^+{RIGHT}'

Можно последовательность нажатий просто загнать в текстовый файл, и вызывать так:

PS D:\PowerShell> Get-Content File.txt | Send-Keys "MyProg"

Правила обозначений клавиш можно посмотреть тут.

Опубликовано в PowerShell. 1 Comment »

Один ответ to “Send-Keys”

  1. SyntaxColor4Writer « PowerShell и другие скрипты Says:

    […] про этот скрипт можно почитать тут. Posted by xaegr Filed in […]


Обсуждение закрыто.

%d такие блоггеры, как: