Заявление AppActivate
Делает активным окно приложения.
Синтаксис
AppActivate title, [ wait ]
Синтаксис оператора AppActivate состоит из следующих именованных аргументов:
Part | Описание |
---|---|
заголовок | Обязательный. Строковое выражение, указывающее заголовок в строке заголовка окна приложения, которое необходимо сделать активным. Для активации приложения на месте заголовка может использоваться идентификатор задачи, возвращаемый функцией Shell. |
wait | Не обязательно указывать. Логическое значение, указывающее наличие фокуса в вызывающем приложении перед активацией другого. При значении False (по умолчанию) указанное приложение сразу становится активным, даже если вызывающее приложение не имеет фокуса. Если true, вызываемая заявка ждет, пока у него будет фокус, а затем активирует указанное приложение. |
Примечания
Оператор AppActivate перемещает фокус на именованное приложение или окно, но не влияет на его размер. Если пользователь выполняет некоторые действия, чтобы изменить фокус или закрыть окно, фокус перемещается с окна активированного приложения. Для запуска приложения и выбора стиля окна используйте функцию Shell.
В определении того, какое приложение сделать активным, title сравнивается со строкой заголовка каждого запущенного приложения. Если точного соответствия нет, активируется любое приложение, строка заголовка которого начинается с title. Если сразу несколько приложений имеют имя title, одно из них активизируется произвольным образом.
Пример
В этом примере показаны различные варианты использования оператора AppActivate для активации окна приложения. В утверждениях Shell предполагается, что приложения находятся в указанных путях. В macOS диск по умолчанию обозначается «HD», а части аргумента «путь» отделяются друг от друга двоеточиями вместо обратной косой черты.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Здравствуйте, с вами автор блога scriptcoding.ru. Сегодня мы рассмотрим, как активировать окно Windows заданного приложения программным методом. Статья будет интересна как рядовым пользователям, так и начинающим программистам.
И так, давайте рассмотрим метод AppActivate объекта WScript_Shell, который позволяет сделать активное окно Window заданной программы. Давайте мысленно подумаем, где метод AppActivate может пригодиться: у нас работает три разных приложения, каждое из них находится в состоянии ожидания ввода данных. Задача – написать сценарий, который обработает нужную информацию, и в зависимости от ее типа, передаст ее той или иной программе.
Как активировать окно Windows программным путем
Что бы имитировать ввод данных с клавиатуры можно использовать функцию SendKeys, вот только есть одна беда, данные будут отправляться в слепую, по принципу, кто активен – тот и получил. Вот тут-то нам и пригодится функция AppActivate, которая позволяет активировать Windows окно, давайте посмотрим на ее синтаксис:
AppActivate (String | ProcessID) – Видим, что метод может принимать только один параметр, который, в свою очередь, может быть или строкой (String), или целым числом (ProcessID). В первом случае, мы передаем методу AppActivate имя диалогового окна того приложения, которое хотим сделать активным, во втором случае – идентификатор процесса заданной программы.
В последнем случае тоже есть подводный камень – нам придется запустить приложение и дополнительно рассмотреть его идентификатор. Но, так мучиться не нужно, есть прекрасная функция Exec, которая позволяет запустить исполняемый файл и получить его идентификатора.
Хорошо, давайте посмотрим на следующий пример на языке vbscript:
В данном примере, мы трижды запускаем программу Блокнот, причем, сразу после запуска, симулируем ввод текста, причем, для каждого экземпляра разный, это позволит нам видеть, действительно ли мы смогли активировать нужное окно Windows. Мы дважды используем метод _AppActivate_, сперва пробуем активировать окно программы по имени ( тут нет никакой логики, так как все три окна имеют одинаковое имя ), а потом пробуем активировать окно программы Windows для второй копии по его идентификатору.
А вот аналогичный пример, но уже на языке jscript:
И так, в этой статье мы рассмотрели объект Wscript_Shell сервера Windows Script Host, а именно: метод _AppActivate_, который позволяет активировать окно Windows приложения.
Спасибо за внимание. Автор блога Владимир Баталий
VBScript: Как развернуть (активизировать) свернутое окно по его имени?
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщения 10
1 Тема от Maks 2010-09-09 10:14:31
Тема: VBScript: Как развернуть (активизировать) свернутое окно по его имени?
Всем привет! Сразу скажу, что я в этих скриптах ничего не понимаю. Столкнулся с такой задачей: необходимо развернуть форму подключения к терминалу «SERVER-Remote Desktop». Кому не лень, помогите пожалуйста!?;)
2 Ответ от alexii 2010-09-09 14:56:25
Re: VBScript: Как развернуть (активизировать) свернутое окно по его имени?
3 Ответ от Himmler 2010-09-10 17:42:07
Re: VBScript: Как развернуть (активизировать) свернутое окно по его имени?
Можно и без сторонних библиотек (пример на js)
4 Ответ от Rom5 2011-03-02 17:00:49
Re: VBScript: Как развернуть (активизировать) свернутое окно по его имени?
Коллеги, подниму старую тему, т.к. давно работающий vbs-скрипт, преключающийся в окошко по имени методом «Shell.AppActivate», под системой Win-7 не активизирует окно, хотя визуально имя окна «Computer Managment» под 7-кой один к одному имени под Win XP.
5 Ответ от alexii 2011-03-02 17:16:59
Re: VBScript: Как развернуть (активизировать) свернутое окно по его имени?
Rom5, если включён UAC, попробуйте сначала запуск имеющегося скрипта с правами администратора (elevate).
6 Ответ от Rom5 2011-03-02 20:15:58
Re: VBScript: Как развернуть (активизировать) свернутое окно по его имени?
Скрипт запускается в HTA-приложении, которое в свою очередь работает от имени доменной админской учетки. И все остальные функции приложения работают прогнозируемо.
Надо как-то скриптами «уточнить» имя окна.
7 Ответ от alexii 2011-03-02 22:22:06
Re: VBScript: Как развернуть (активизировать) свернутое окно по его имени?
Rom5, Вы понимаете, что «от имени доменной админской учетки» и «elevate» — разные вещи.
8 Ответ от Xameleon 2011-03-03 12:32:34 (изменено: Xameleon, 2011-03-03 13:18:36)
Re: VBScript: Как развернуть (активизировать) свернутое окно по его имени?
Вообще в MSDN пишут следующее про параметры метода AppActivate
title
Specifies which application to activate. This can be a string containing the title of the application (as it appears in the title bar) or the application’s Process ID.
Раз он может быть ProcessID, то можем попробывать подсунуть его. Получить его можно, запустив приложение через WshShell.Exec
Собственно как то так.
Крутим цикл активации приложения до тех пор, пока оно не завершится.
Ну всё бы хорошо, только эффект всё равно невнятный какой то.
P.P.S Да, и кстати рекомендую прислушаться к совету alexii. Я сам не проверял, но очень возможно, что дело именно в UAC.
9 Ответ от Rom5 2011-03-04 19:26:00
Re: VBScript: Как развернуть (активизировать) свернутое окно по его имени?
Rom5, Вы понимаете, что «от имени доменной админской учетки» и «elevate» — разные вещи.
Активизировать окно программы
Вопрос: как активизировать данное окно, средствами vbs?
Как активизировать окно программы?
Добрый день, уважаемые! На компьютере запущено несколько программ. Я хочу закрыть одну из них с.
Как активизировать окно моей программы при нажатии Ctrl+c+c (как в Lingvo)
Пока я поставил на форме таймер и там идет определение изменение буфера обмена. Как бы сделать.
Как активизировать окно по его Hwnd
Как сделать окно активным если известно его Hwnd?
Как активизировать ячейку с именем введя имя через окно ввода?
Как активизировать ячейку с именем введя имя через окно ввода?
Извините, но я не смог применить ваши варианты кода для своей проблемы, вот так я пытался реализовать через Exec с других примеров, но так тоже не работает, нужное мне окно не активизируется.
Попытка применить один из ваших вариантов:
Добавлено через 8 минут
Вы сами понимаете, что пишите? Родительский процесс — это процесс, который породил вызываемый. Т.е. если открыть приложение из Проводника, то Проводник и будет для него родителем. А что такое «окно ранее созданного сообщения» для меня вообще загадка. Если процесс запускается впервые, откуда взяться ранее созданному сообщению?
Попытка с кодом неясна. У меня нет строк 4-8.
Скрипт будет запускаться из меню правой кнопки мыши(клик по папке):
1) Копирует путь до папки
2) Создаёт новое письмо в Thunderbird
3) Вставляет в поле Тема символ «-«, Title окна становится равным названию Темы, т.е. «-»
4) Вставляет в письмо ссылку на папку(из буфера обмена)
Конец скрипта
VBS: Не получается активировать окно внутри запущенной программы
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщения 8
1 Тема от palexa 2015-12-20 16:53:02 (изменено: palexa, 2015-12-21 02:11:54)
Тема: VBS: Не получается активировать окно внутри запущенной программы
Надо запустить программу и вставить автоматически пароль, но не получается
Окно не активируется, и пароль успешно вставляется в блокнот, который отрыт поверх программы
skrin1.jpg 62.41 kb, 16 downloads since 2015-12-20
You don’t have the permssions to download the attachments of this post.