Vbs сделать окно активным

Обновлено: 24.04.2024

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Активирует приложение, которое уже выполняется.

Перегрузки

Активирует приложение, которое уже выполняется.

Активирует приложение, которое уже выполняется.

AppActivate(Int32)

Активирует приложение, которое уже выполняется.

Параметры

Значение типа Integer , задающее номер идентификатора процесса Win32, назначенного процессу. Можно использовать идентификатор, который возвращает Shell(String, AppWinStyle, Boolean, Int32), если он не равен нулю.

Примеры

В этом примере показано использование функции для активации AppActivate окна приложения. Если процесс Блокнот не выполняется, в примере возникает ArgumentExceptionисключение . В Shell процедуре предполагается, что приложения находятся в указанных путях.

Комментарии

Используется для AppActivate фокуса активного окна приложения. Возможно, у вас нет дескриптора или ссылки на активное окно или даже известно, какое окно активно в данный момент. В таком случае нельзя использовать Focus метод.

Функция AppActivate изменяет фокус на именованное приложение или окно, но не влияет на его развертывание или свертывание. Фокус перемещается от активированного окна приложения, когда пользователь принимает какое-либо действие, чтобы изменить фокус или закрыть окно. Функцию Shell можно использовать для запуска приложения и настройки стиля окна.

При использовании Title параметра используется сравнение без учета регистра, AppActivate но в противном случае требуется точное совпадение с содержимым строки заголовка. Сначала он просматривает окна верхнего уровня, а затем через дочерние окна. Если не удается найти совпадение, он создает исключение ArgumentException.

Можно использовать AppActivate только с процессами, которые имеют собственные окна. Большинство консольных приложений не имеют собственных окон, что означает, что они не отображаются в списке процессов, выполняющих AppActivate поиск. При запуске из консольного приложения система создает отдельный процесс для запуска приложения и возвращает выходные данные в процесс консоли. Следовательно, при запросе текущего идентификатора процесса вы получаете идентификатор процесса этого отдельного процесса, а не идентификатор процесса консольного приложения.

Во время AppActivate выполнения функция активирует любое работающее приложение с заголовком, соответствующим Title или идентификатором процесса, соответствующим ProcessId . Если точного совпадения нет, он активирует любое приложение, строка заголовка которого заканчивается Title . Если имеется несколько именованных Title приложений, AppActivate функция произвольно выбирает ее для активации.

Функция AppActivate требуется UIPermission на SafeTopLevelWindows уровне, что может повлиять на его выполнение в ситуациях с частичным доверием. Дополнительные сведения см. в разделе UIPermission.

метод AppActivate объекта Wscript.Shell

И так, давайте рассмотрим метод AppActivate объекта WScript_Shell, который позволяет сделать активное окно Window заданной программы. Давайте мысленно подумаем, где метод AppActivate может пригодиться: у нас работает три разных приложения, каждое из них находится в состоянии ожидания ввода данных. Задача – написать сценарий, который обработает нужную информацию, и в зависимости от ее типа, передаст ее той или иной программе.

Как активировать окно Windows программным путем

Что бы имитировать ввод данных с клавиатуры можно использовать функцию SendKeys, вот только есть одна беда, данные будут отправляться в слепую, по принципу, кто активен – тот и получил. Вот тут-то нам и пригодится функция AppActivate, которая позволяет активировать Windows окно, давайте посмотрим на ее синтаксис:

AppActivate (String | ProcessID) – Видим, что метод может принимать только один параметр, который, в свою очередь, может быть или строкой (String), или целым числом (ProcessID). В первом случае, мы передаем методу AppActivate имя диалогового окна того приложения, которое хотим сделать активным, во втором случае – идентификатор процесса заданной программы.

Вроде всё понятно, но есть один подводный камень. Если мы одновременно запустим несколько экземпляров одной программы , например, программу Блокнот, то мы увидим, что заголовки окон идентичны, в этом случае, метод AppActivate сделает активное окно того экземпляр, который первый в его внутреннем списке, грубо говоря, мы не сможем активировать окно ОС Windows для нужной нам копии . Но, зато, для активации Windows окна можно использовать идентификатор процесса – его можно узнать, запустив диспетчер задач и перейдя на вкладку процессы, имя процесса для программы _Блокнот_ – notepad.exe.

В последнем случае тоже есть подводный камень – нам придется запустить приложение и дополнительно рассмотреть его идентификатор. Но, так мучиться не нужно, есть прекрасная функция Exec, которая позволяет запустить исполняемый файл и получить его идентификатора.

активное окно приложения Windows

Хорошо, давайте посмотрим на следующий пример на языке vbscript:

'*********************************************************************************** ' Wscript_Shell_метод_AppActivate ' Как активировать окно Windows приложения ' AppActivate1.vbs '*********************************************************************************** Option Explicit dim WshShell dim note_1, note_2, note_3 ' Создаем ссылку на объект WScript_Shell set WshShell = WScript.CreateObject("WScript.Shell") '----------------------------------------------------------------------- ' запускаем три копии _блокнота_ '----------------------------------------------------------------------- ' первый экземпляр set note_1 = WshShell.Exec("notepad.exe") ' ждем 500 миллисекунд WScript.Sleep 500 ' отправляем строку WshShell.SendKeys ("первая копия") '----------------------------------------------------------------------- ' второй экземпляр set note_2 = WshShell.Exec("notepad.exe") ' ждем 500 миллисекунд WScript.Sleep 500 ' отправляем строку WshShell.SendKeys ("вторая копия") '----------------------------------------------------------------------- ' третий экземпляр set note_3 = WshShell.Exec("notepad.exe") ' ждем 500 миллисекунд WScript.Sleep 500 With WshShell ' отправляем строку .SendKeys ("третья копия") '----------------------------------------------------------------------- ' запускаем калькулятор .Exec("calc.exe") ' пробуем активировать окно Windows по его имени ' потерпим неудачу. .AppActivate ("Безымянный - Блокнот") MsgBox "Какой экземпляр активирован?" ' активное окно второй копии _блокнота_ .AppActivate (note_2.ProcessID) End With MsgBox "Какой экземпляр активирован?"

В данном примере, мы трижды запускаем программу Блокнот, причем, сразу после запуска, симулируем ввод текста, причем, для каждого экземпляра разный, это позволит нам видеть, действительно ли мы смогли активировать нужное окно Windows. Мы дважды используем метод _AppActivate_, сперва пробуем активировать окно программы по имени ( тут нет никакой логики, так как все три окна имеют одинаковое имя ), а потом пробуем активировать окно программы Windows для второй копии по его идентификатору.

Как активировать окно ОС Windows

А вот аналогичный пример, но уже на языке jscript:

И так, в этой статье мы рассмотрели объект Wscript_Shell сервера Windows Script Host, а именно: метод _AppActivate_, который позволяет активировать окно Windows приложения.

Спасибо за внимание. Автор блога Владимир Баталий

В данной статье я решил рассмотреть способы создания диалогового окна базовыми способами – средствами Windows Script Host. В частности рассмотрены методы: BrowseForFolder, InputBox, Echo, MsgBox и Popup.

Скрипт выбора папки - метод BrowseForFolder

И так, приступим

BrowseForFolder

Создание диалогового окна для выбора папок и даже файлов осуществляется с помощью метода BrowseForFolder, что бы его использовать, надо прежде создать экземпляр объекта Application. Стоит взять на заметку, что поддержку осуществляет функция из библиотеки Shdocvw.dll, которая входит в состав Internet Explorer версий 4 и 5.

Также понадобится библиотека Shell32.dll версии 4.71 и выше, доступная в Windows 98 (версия 4.72) и Windows 2000 (версия 5). В Windows 95/NT 4 библиотека Shell32.dll версии 4.71 доступна, если установлен Internet Explorer 4 с обновлением Active Desktop. При ус­тановке Internet Explorer 5 в Windows 95/NT обновления Shell32.dll не происходит. Следует сначала установить Internet Explorer 4 с обновле­нием Active Desktop, а затем уже Internet Explorer 5.

Давайте создадим экземпляр объекта Shell.Application и посмотрим на синтаксис:

Set objDig = WScript.CreateObject("Shell.Application") Set objF = objDig.BrowseForFolder(hWnd, Titl, Options[, Root])

Рассмотрим описание параметров:

hWnd - передает создаваемому диалоговому окну описатель окна, он всегда должен быть равен 0, поскольку у сценария нет описателя.
Titl - задает строку, которая выводится в созданном диалоговом окне ниже заголовка.
Options - представляет собой 32-разрядный флаг, который зада­ет внутренние свойства диалогового окна. Некоторые константы можно комбинировать (например, &Н0010 и &Н0001).
Root – необязательный, позволяет заранее выбрать пап­ку. Путь может быть задан в виде строки (на­пример, D:\Data) или с помощью одного из значений, которые позволяют использовать специальную папку в простран­стве имен оболочки. Список значений также описано в шпаргалке.

Давайте рассмотрим пример на VBScript для выбора каталогов:

' *********************************************************** ' BrowseForFolder_folders.vbs ' Создание диалогового окна выбора каталога на VBScript ' *********************************************************** Option Explicit ' Флаги Const BIF_returnonlyfsdirs = &H0001 Const BIF_editbox = &H0010 Dim wsh, objDlg, objF ' Получить объект Application оболочки Windows. Set objDlg = WScript.CreateObject("Shell.Application") Set objF = objDlg.BrowseForFolder (&H0, _ "Выберите каталог для копирования", BIF_editbox + BIF_returnonlyfsdirs) ' Проверка условия If isValue(objF) Then MsgBox "Выбрано: " & objF.Title Else MsgBox "Отменено" End If Function IsValue(obj) ' Проверить, вернул ли метод какое-либо значение. Dim tmp On Error Resume Next tmp = "" & obj If Err <> 0 Then IsValue = False Else IsValue = True End If On Error GoTo 0 End Function

Теперь рассмотрим пример на VBScript для выбора файлов:

InputBox

Теперь давайте рассмотрим функцию InputBox, которая позволяет получить информации от пользователя. Стоит упомянуть, что функция InputBox поддерживается только языком VBScript. Давайте посмотрим на ее общий синтаксис:

result = InputBox(текст[, [заголовок], [умолчание], [поз-Х], [поз-У]])

Пример создания диалогового окна - - метод Popup

Описание ключей таковы.

Есть еще два необязательных ключа helpflle и context, с их помощью можно создавать встроенную справку, хотя, как правило, в данном контексте в этом нет необходимости.

Если необязательный ключ не задан, VBScript использует значение по умолчанию. Чтобы опустить необязательный параметр, надо оставить его место между двумя запятыми пустым:

InputBox("Привет", "Тест", , 100, 200)

В отличие от MsgBox ключа для кнопки у функции InputBox нет. Резуль­тат, возвращаемый InputBox при закрытии, зависит от того, какая кнопка была нажата: ОК возвращает содержимое текстового поля (т. е. данные, введенные пользователем), a Cancel отменяет результаты ввода и возвращает пустую строку. Переменная result позволяет проверить, ввел ли человек действительную информацию.

' *********************************************************** ' InputBox.vbs ' Создание диалогового окна для получение вводимой информации на VBScript '**************************************************************** Option Explicit Dim Message, result Dim Title, Text1, Text2 ' Определить переменные диалоговых окон. Message = "Диалоговое окно на VBScript" Title = "Создание пользовательского диалогового окна " Text1 = "Было нажато на отмену" Text2 = "Вы ввели:" & vbCrLf ' Все готово для использования функции InputBox; result = InputBox(Message, Title, "Ввод данных", 100, 100) ' Обработать введенную информацию. If result = "" Then ' Отмена WScript.Echo Text1 Else WScript.Echo Text2 & result End If

Echo

WScript.Echo " VBScript, vbYesNo ровно: ", vbYesNo

WScript.Echo ("Jscript, Math.E ровно: ", Math.E);

Скрипт для создания диалогового окна

Как видим, все предельно просто, в кавычках мы прописали текст, а далее после запятой следовала константа, значение которой должно быть показано пользователю. Для перевода строки также надо использовать константы или ESC-последовательность:

WScript.Echo "Первая строка" & vbCrLf &"Вторая строка"

WScript.Echo ("Первая строка\n", "Вторая строка\n");

Тут, для JS мы взяли ESC-последовательность "\n" , а для VBS – vbCrLf константу.

MsgBox

MsgBox позволяет создавать диалоговое окно только сценариями языка VBS, в отличии от метода Echo она имеет в своем составе больший функционал – число кнопок, название окна, ну и, естественно, сам текст. Общий синтаксис таков:

MsgBox(prompt[,buttons][,title][,helpfile,context])

prompt – является обязательным и отвечает за текст, выводимый диалоговым окном
buttons – необязательный, целое число или константа (количество и тип кнопок, вид значка, установка фокуса)
title – также не является обязательным, определяет название окна
helpfile – задает путь к файлу-справке, файл-справка должен иметь расширение .hlp
context – число, которое задает раздел справки

Вот простой пример:

MsgBox "Пример с двумя кнопками", 1, "Пример работы"

Фактически, ключи для кнопок и заголовок можно опустить, тогда мы получим результат, идентичный Echo. С помощью констант можно задавать тип, фокус и количество кнопок. В добавок, вы можете определить и значок для создаваемого диалогового окна, то есть, вы вправе комбинировать константы, смотрим:

MsgBox "Как сделать вывод диалогового окна с двумя кнопками и значком", vbOkCancel+vbInformation, "Cкрипт"

Теперь давайте посмотрим, как работают два последних ключа helpfile и context, ведь с их помощью можно задать справку. Тут нам понадобится константа vbMsgBoxHelpButton, смотрим на код:

MsgBox "Как сделать пример диалогового окна со справкой", vbMsgBoxHelpButton, "Cкрипт", "filemon.hlp ", 1

Не знаю почему, но ничего не получилось, выбивает ошибку:

Раздел не существует. Обратитесь к поставщику продукта за обновленной версией файла справки. (129)

Возможно, есть некие подводные камни, Ну да ладно. Важно еще и то, что функция MsgBox возвращает результат, который можно присвоить переменной, с помощью него можно определить, на что нажал пользователь. Смотрим на код:

' *********************************************************** ' MsgBox.vbs ' Создание диалогового окна с помощью MsgBox '********************************************************************** Option Explicit Dim Result result = MsgBox("Определяем, на что было нажато", vbOkCancel+ vbInformation, "Заголовок") If result = vbOK Then WScript.Echo "Нажата клавиша ОК" Else WScript.Echo "Нажата клавиша Отмена" End If

Popup

Теперь давайте россмотрим пример, как осуществить создание диалогового окна используя метод Popup, который сам по себе не является частью языка сценариев. Он входит в состав объектной модели WSH и поддерживается объектом WshShell. По своим характеристикам, он является аналогом функции MsgBox. Прежде всего, в сценарии нужно создать экземпляр объекта WshShеll. Для этого можно применить функцию CreateObject. Давайте посмотрим, на начальные строки для будущих примеров.

И так, создаем экземпляр компонента:

var WshShell = WScript.CreateObject("WScript.Shell"); //JScript

Set WshShell = WScript.CreateObject("WScript.Shell") ' VBScript

Теперь мы сможем использовать переменную WshShеll для вызова функции Popup. Теперь давайте рассмотрим общий синтаксис:

WshShell.Popup (текст, таймаут, заголовок, кнопки);

Тут передаются следующие параметры:

Текст – собственно, тот текст, что надо вывести в диалоге. Тут можно использовать конкатенацию (объединение) констант, подстрок и переменных.
Таймаут – время, через которое будет закрыто пользовательское окошко, если от пользователя не поступят команды на закрытие. Для отключения тайм аута надо присвоить значение 0.
Заголовок – собственно, заголовок создаваемого окна.
Кнопки – тут используются константы, которые задают вид и количество кнопок.

Сам метод возвращает код кнопки, которой пользователь закрыл окно. Теперь давайте рассмотрим по одному примеру как создавать диалоговое окно для VBScript и Jscript синтаксиса.

// *********************************************************** // Pорup.js // Создание диалогового окна с помощью метода Pорup // ********************************************************* // Объявляем переменные для управления диалогом var vbOKCancel = 1; var vbOK = 1; var vbInformation = 64; var vbCancel = 2; var resultat; var Message = "Нажмите на клавишу"; var Title = "Работа с функцией Pоpup"; var WshShell = WScript.CreateObject("WScript.Shell"); // Выводим диалоговое окно resultat = WshShell.Popup(Message,0,Title, vbOKCancel + vbInformation); // Условие для проверки, на что нажал пользователь if (resultat == vbOK) < WScript.Echo ("Нажато на OK " +"(Код: " + resultat + ")"); >else < WScript.Echo ("Нажато на Отмена " + "(Код: " + resultat + ")"); >WScript.Echo("Выход из программы");

Ну и пример на VBScript:

' *********************************************************** ' Pорup.vbs ' Создание диалогового окна с помощью метода Pорup ' ************************************************************* Option Explicit Dim Message, Title, result, WShell Message = "Нажмите на кнопку" Title = "Работа с методом Poрuр" ' Создаем экземпляр объекта WshShell . Set WShell = WScript.CreateObject("WScript.Shell") ' Выводим диалоговое окно с помощью функции Poрuр, result = WShell.Popup(Message, 0, Title, vbOKCancel + vbInformation) ' Условие для проверки, на что нажал пользователь if (result = vbOK) then WScript.Echo "Кликнуто на OK " & "(Код: " & result & ")" else WScript.Echo "Кликнуто на Отмена " & "(Код: " & result & ")" End if WScript.Echo "Выход из программы"

Спасибо за внимание. Автор блога Владимир Баталий

метод SendKays объекта WScript Shell

SendKeys – имитация нажатия клавиш – теоретические основы

Метод SendKeys, который позволяет имитировать нажатие клавиш и их комбинаций. Метод SendKeys объекта WScript.Shell является по своей природе слепым, так как он не позволяет указать то приложение, которому назначен ввод с клавиатуры, то есть, если мы сделаем попытку имитировать ввод фразы "привет мир", то она будет обрабатываться лишь тому приложениею, которое в данный момент являются активным. Если активным будет текстовый редактор – то в нем отобразится заданный текст, если антивирусная программа – то, скорее всего, никакой активности не произойдет.

Что бы использовать функцию Wscript SendKeys, нужно объявить переменную, которая будет хранить ссылку на объект WScript.Shell, а уже через эту переменную можно будет вызвать SendKeys.

Общая логика работы:

SendKeys (строка) – Видим, что мы в качестве аргумента должны передать строковое выражение, которое будет хранить имя клавиши или сочетание.

Что бы ввести просто символ или набор символов, мы всего-навсего прописываем их как строку, например: SendKeys("привет мир"). Для ввода специальных клавиш (например, Enter, стрелки, функциональные клавиши и так далее), их название нужно заключить в фигурные скобки <>.

Ниже приведен список функциональных клавиш и их обозначение:

  • BACKSPACE -, или
  • BREAK -
  • CAPS LOCK -
  • DEL или DELETE - или
  • СТРЕЛКА ВНИЗ -
  • END -
  • ENTER -или ~
  • ESC -
  • HELP -
  • HOME -
  • INS или INSERT - или
  • СТРЕЛКА ВЛЕВО -
  • NUM LOCK -
  • PAGE DOWN -
  • PAGE UP -
  • PRINT SCREEN -
  • СТРЕЛКА ВПРАВО -
  • SCROLL LOCK -
  • TAB -
  • СТРЕЛКА ВВЕРХ -
  • F1-
  • F2 -
  • F3 -
  • F4 -
  • F5 -
  • F6 -
  • F7 -

Если нужно указать сочетание специальных клавиш, то следует использовать следующие коды:

Также стоит помнить, что для ввода символов +, ^, %, ~, (, ) , , [, ] их также нужно заключить в фигурные скобки.

Если есть необходимость имитации нажатия клавиши несколько раз подряд, то после нее через пробел прописывается количество, например: – 20 раз подряд нажата клавиша n. Стоит учитывать один немаловажный момент, имитация нажатия клавиши не действует для приложений , которые не были разработаны специально для запуска в Microsoft Windows, например, командная строка .

SendKeys – имитация нажатия клавиш – приступаем к программированию

имитация нажатия клавиш с wscript sendkeys

Хорошо, с теорией разобрались, теперь давайте приступим к программированию. Давайте для начала рассмотрим следующий пример программного кода на языке vbscript:

'*************************************** ' wscript shell SendKeys ' имитация нажатия клавиш в блокноте ' SendKeys.vbs '*************************************** Option Explicit Dim WshShell, my_arr(16), index ' Создаем ссылку на объект Set WshShell = WScript.CreateObject("WScript.Shell") 'Определяем элементы массива my_arr(0) = "Э" my_arr(1) = "т" my_arr(2) = "о" my_arr(3) = "" my_arr(4) = "п" my_arr(5) = "р" my_arr(6) = "о" my_arr(7) = "с" my_arr(8) = "т" my_arr(9) = "о" my_arr(10) = "й" my_arr(11) = "" my_arr(12) = "т" my_arr(13) = "е" my_arr(14) = "к" my_arr(15) = "с" my_arr(16) = "т" ' Запускаем программу блокнот WshShell.Run "Notepad.exe", 1 'Делаем задержку в 2 секунды WScript.Sleep 2000 ' Используем цикл для перебора элементов массива For each index in my_arr ' Имитируем нажатие клавиши WshShell.SendKeys(index) ' Делаем задержку в 500 миллисекунд WScript.Sleep 500 Next MsgBox "Конец теста!"

А вот аналогичный пример, но уже на языке jscript:

//*************************************** // wscript shell SendKeys // имитация нажатия клавиш в блокноте // SendKeys.js //*************************************** var WshShell, my_arr1 = new Array; // Создаем ссылку на класс WshShell = WScript.CreateObject("WScript.Shell"); //Формируем массив my_arr1[0] = "Э"; my_arr1[1] = "т"; my_arr1[2] = "о"; my_arr1[3] = ""; my_arr1[4] = "п"; my_arr1[5] = "р"; my_arr1[6] = "о"; my_arr1[7] = "с"; my_arr1[8] = "т"; my_arr1[9] = "о"; my_arr1[10] = "й"; my_arr1[11] = ""; my_arr1[12] = "т"; my_arr1[13] = "е"; my_arr1[14] = "к"; my_arr1[15] = "с"; my_arr1[16] = "т"; // Запускаем текстовый редактор блокнот WshShell.Run ("Notepad.exe", 1); //Задержка в 2 секунды WScript.Sleep (2000); // Используем цикл для перебора элементов массива for (var index in my_arr1) < // Имитируем нажатие клавиши WshShell.SendKeys(my_arr1[index]); // Делаем задержку в 500 миллисекунд WScript.Sleep (500); >WScript.Echo ("Конец теста!");

А вот еще один пример на vbscript :

'*************************************** ' SendKeys wscript ' имитация нажатия клавиш в калькуляторе ' SendKeys_1.vbs '*************************************** Option Explicit Dim WshShell, my_arr2(5), index ' Создаем ссылку на класс Set WshShell = WScript.CreateObject("WScript.Shell") 'математическая операция ' 100/2*0.5 my_arr2(0) = "100" my_arr2(1) = "/" my_arr2(2) = "2" my_arr2(3) = "*" my_arr2(4) = "0.5" my_arr2(5) = "=" ' Запускаем программу калькулятор WshShell.Run "calc.exe", 1 'Делаем задержку в 2 секунды WScript.Sleep 2000 ' последовательно вводим данные For each index in my_arr2 WshShell.SendKeys(index) WScript.Sleep 500 Next ' закрываем калькулятор WshShell.SendKeys("%") MsgBox "Операция выполнена!" ' Пытаемся запустить диспетчер задач WshShell.SendKeys("^%")

делаем имитацию нажатия клавиши - wscript shell sendkeys

Ну и пример на языке jscript :

//*************************************** // sendkeys wscript // имитация нажатия клавиш в калькуляторе // SendKeys_1.js //*************************************** var WshShell, my_arr3 = new Array; // Создаем ссылку на класс WshShell = WScript.CreateObject("WScript.Shell"); //Формируем массив my_arr3[0] = "100"; my_arr3[1] = "/"; my_arr3[2] = "2"; my_arr3[3] = "*"; my_arr3[4] = "0.5"; my_arr3[5] = "="; // Запускаем текстовый редактор блокнот WshShell.Run ("calc.exe", 1); //Задержка в 2 секунды WScript.Sleep (2000); // Используем цикл для перебора элементов массива for (var index in my_arr3) < WshShell.SendKeys(my_arr3[index]); WScript.Sleep (500); >// закрываем калькулятор WshShell.SendKeys("%"); WScript.Echo ("Операция выполнена"); // Пытаемся запустить диспетчер задач WshShell.SendKeys("^%");

И так, давайте все подытожим… В этой статье мы рассмотрели функцию SendKeys класса WScript Shell, которая позволяет создавать имитацию нажатия клавиш, мы написали четыре программных кода – два на языке vbscript и два на языке jscript. Помним, что программный код работает под управлением сервера сценариев Windows Script Host.

Спасибо за внимание. Автор блога Владимир Баталий

Синтаксис оператора AppActivate состоит из следующих именованных аргументов:

Часть Описание
заголовок Обязательно. Строковое выражение, указывающее заголовок в строке заголовка окна приложения, которое необходимо сделать активным. Для активации приложения на месте заголовка может использоваться идентификатор задачи, возвращаемый функцией Shell.
wait Не обязательно указывать. Логическое значение, указывающее наличие фокуса в вызывающем приложении перед активацией другого. При значении False (по умолчанию) указанное приложение сразу становится активным, даже если вызывающее приложение не имеет фокуса. Если true, вызываемого приложения ждет, пока он имеет фокус, а затем активирует указанное приложение.

Комментарии

Оператор AppActivate перемещает фокус на именованное приложение или окно, но не влияет на его размер. Если пользователь выполняет некоторые действия, чтобы изменить фокус или закрыть окно, фокус перемещается с окна активированного приложения. Для запуска приложения и выбора стиля окна используйте функцию Shell.

В определении того, какое приложение сделать активным, title сравнивается со строкой заголовка каждого запущенного приложения. Если точного соответствия нет, активируется любое приложение, строка заголовка которого начинается с title. Если сразу несколько приложений имеют имя title, одно из них активизируется произвольным образом.

Пример

В этом примере показаны различные варианты использования оператора AppActivate для активации окна приложения. В утверждениях Shell предполагается, что приложения находятся в указанных путях. В macOS диск по умолчанию обозначается "HD", а части аргумента "путь" отделяются друг от друга двоеточиями вместо обратной косой черты.

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Читайте также: