1 (изменено: palexa, 2015-12-21 02:11:54)

Тема: VBS: Не получается активировать окно внутри запущенной программы

Привет!

Надо запустить программу и вставить автоматически пароль, но не получается

Вот код файла vbs

Dim objShell
set objShell = Wscript.CreateObject("WScript.Shell")

'Пароль который надо вставить
PassWord = "PaSSw0rd1234"

'запуск программы с ключом
objShell.Run """c:\Progra~1\x2goclient\x2goclient.exe"" --session=internet"""
'После запуска программы отрывается основное окно программы с заголовком X2Go Client

Do Until Success = True
'После успешного соединения с сервером поверх основного окна отрывается окошко с именем user@192.168.100.101:22
'Надо активировать это окншко, (на случай, если будет поверх открыт блокнот для перехвата пароля) и вставить пароль в нужное окошко
    Success = objShell.AppActivate("user@192.168.100.101:22")
Loop
objShell.Sendkeys PassWord & "{ENTER}"

Wscript.Quit

Окно не активируется, и пароль успешно вставляется в блокнот, который отрыт поверх программы

Скриншот в файле

Может поможете ?

Post's attachments

skrin1.jpg 62.41 kb, 16 downloads since 2015-12-20 

You don't have the permssions to download the attachments of this post.

2

Re: VBS: Не получается активировать окно внутри запущенной программы

2palexa
AppActivate работает только если в качестве параметра задано имя или ProcessId основного окна приложения. Тебе же надо писать в дочернее окно.
Не факт что оно активируется при активации основного окна (но попробовать можно).
Да и функция SendKeys может вместо заданного пароля вставить всякую ерунду, т.к. текст зависит от текущей раскладки клавиатуры.
Я бы посоветовал использовать AutoIt или AutoHotkey - они заточены под такие задачи. Или, самое простое и доступное - замечательную утилитку nircmd.

3

Re: VBS: Не получается активировать окно внутри запущенной программы

Если мышкой активировать главное окно, то активным стаёт дочерное окно

Но не работает скрипт

4

Re: VBS: Не получается активировать окно внутри запущенной программы

Не работает на простейшем примере

Set WshShell = CreateObject("WScript.Shell") 
Set WshExec = WshShell.Exec("calc") 

WScript.Sleep 10000 

Res = WshShell.AppActivate(WshExec.ProcessID) 
If Res Then WshShell.SendKeys("2*2=")

Открывается калькулятор
пауза на 10 секунд
Открываю блокнот (он теперь активный)

По идее, после паузы, должен стать активным калькулятор, в который вставляется 2*2=

Но увы, калькулятор не активируется и 2*2= вставляется в блокнот

5 (изменено: palexa, 2015-12-20 23:58:30)

Re: VBS: Не получается активировать окно внутри запущенной программы

Запускаю первый скрипт
start1.vbs

Dim objShell
set objShell = Wscript.CreateObject("WScript.Shell")

objShell.Run """c:\Progra~1\x2goclient\x2goclient.exe"" --session=internet"""
Do Until Success = True
    Success = objShell.AppActivate(+ "@192.168.100.101:22")
Loop

Wscript.Quit

Для чистоты эксперемента открываю блокнот (активное окно)

Запускаю второй скрипт

start2.vbs

PassWord = "PaSSw0rd1234"

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.AppActivate ("X2Go Client") , true 

WshShell.Sendkeys PassWord & "{ENTER}"

Wscript.Quit

Скрипт активирует окно X2Go Client и вставляет пароль

Вот только уже голову сломал как объединить эти файлы в один VBS

Точнее если объединить, то всё опять повторяется, вставляет в блокнот

6 (изменено: palexa, 2015-12-21 02:14:01)

Re: VBS: Не получается активировать окно внутри запущенной программы

Возможно это правильный вариант, хоть и не идеальный, можно подловить момент, но у меня из 10 раз получилось только 1,
на всякий случай запишу здесь

Dim objShell
set objShell = Wscript.CreateObject("WScript.Shell")
PassWord = "PaSSw0rd1234"

objShell.Run """c:\Progra~1\x2goclient\x2goclient.exe"" --session=internet --no-menu --no-session-edit"""

Do Until Success = True
    Success = objShell.AppActivate(+ "@192.168.100.101:22")
Loop

If Activated = 0 Then
    Set WshShell = WScript.CreateObject("WScript.Shell")
    WshShell.AppActivate ("X2Go Client") , true 
    WshShell.Sendkeys PassWord & "{ENTER}"
End If

Wscript.Quit

7

Re: VBS: Не получается активировать окно внутри запущенной программы

palexa
На основе попробуйте.

8 (изменено: palexa, 2015-12-22 14:48:38)

Re: VBS: Не получается активировать окно внутри запущенной программы

Пришёл на работу, то же самое, окно не активирует и успешно вставляет в блокнот, если он активен