vbscript для автоматического обнаружения открытого окна и его закрытия ИЛИ скрипт Google Apps для управления кнопкой отправки формы

В прошлом я использовал приведенный ниже сценарий, чтобы определить, активно ли активное окно с заголовком «Удаленный рабочий стол». Если он не активен, скрипт автоматически запустится или снова сделает его активным.

Вопрос: Есть ли способ определить, активно ли окно, и автоматически закрыть его? Я настраиваю киоск в режиме хромированного киоска на компьютере с Windows 7 для нашего офиса. Главная страница запускает выбранную форму Google во всплывающем окне. Страница подтверждения формы имеет заголовок «Спасибо!» в строке заголовка. Есть ли способ для скрипта автоматически обнаружить это окно и закрыть его? Это было бы хорошо, потому что пользователь увидит, что его ответ был отправлен (на секунду или две), но если он не закроет окно, оно не будет открыто, когда следующий пользователь пойдет использовать киоск.

Другой вариант может быть, если есть способ использовать скрипт Google в форме, чтобы запрограммировать кнопку отправки, чтобы закрыть окно. Я не уверен, что это возможно.

Option Explicit
'On Error Resume Next

Dim objShell

Set objShell = CreateObject("WScript.Shell")

Do 
If (objShell.AppActivate("Window Title Here") = False) Then
objShell.Run "mstsc.exe " & chr(34) & "c:\scripts\Remote Desktop.rdp" & chr(34)
WScript.Sleep 5000
Else
WScript.Sleep 3000
End If
Loop

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

Set oShell = CreateObject("WScript.Shell") 
If oShell.AppActivate("Untitled - Notepad") Then
   WScript.Sleep 500
   oShell.SendKeys "%{F4}"
End If

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

Думаю, я нашел хорошее решение. Я нашел это сообщение и изменил ответ. Кто-нибудь видит какие-либо проблемы с этим?

' Will loop forever checking for the message every half a second  
' When it finds the message it will close the window 

Set wshShell = CreateObject("WScript.Shell") 

Do 
    ret = wshShell.AppActivate("Untitled - Notepad") 
    If ret = True Then 
        wshShell.SendKeys "%{F4}" 'ALT F4
    End If 
    WScript.Sleep 500 
Loop 

person user2116516    schedule 07.11.2013    source источник
comment
Просто я правильно понимаю: вы хотите найти приложение по (частично) его заголовку окна с VBScript в Windows?   -  person Tomalak    schedule 07.11.2013
comment
Невозможно со скриптом gapps   -  person Zig Mandel    schedule 08.11.2013
comment
Да Тамалак. Сценарий запускается при запуске и обнаруживает окно при открытии, а затем закрывает его. Я отредактировал исходный пост, включив в него сценарий, на который я ссылался в первом абзаце.   -  person user2116516    schedule 08.11.2013
comment
@Tomalak Я обновил свой пост, указав свои успехи.   -  person user2116516    schedule 12.11.2013
comment
@Tomalak Я снова обновил свой пост. Кажется, я наконец нашел ответ. Видите ли вы какие-либо проблемы с использованием этого решения?   -  person user2116516    schedule 12.11.2013
comment
Это последнее обновление довольно хорошее, вы можете использовать его. Единственным недостатком является то, что он не будет работать в ситуации, когда название приложения не совсем предсказуемо. В таком случае вам нужно будет переключиться на WMI для поиска приложения по имени процесса (см. здесь - есть много других примеров, если вы знаете, что искать). Если название вашего приложения исправлено, все вышеперечисленное будет работать нормально. Если вы напишете это как ответ, я проголосую, и в какой-то момент вы сможете принять свой собственный ответ.   -  person Tomalak    schedule 13.11.2013
comment
Спасибо за предложение WMI. С вышеуказанным решением киоск работает хорошо. Формы Google переходят на страницу благодарности после отправки, поэтому я изменил заголовок в сценарии, чтобы он соответствовал.   -  person user2116516    schedule 14.11.2013


Ответы (1)


Set wshShell = CreateObject("WScript.Shell") 

Do 
ret = wshShell.AppActivate("Untitled - Notepad") 
If ret = True Then 
    wshShell.SendKeys "%{F4}" 'ALT F4
End If 
WScript.Sleep 500 
Loop

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

Я попробовал сценарий, и он отлично работает, но как насчет использования клавиши escape для определенных окон?

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

person Chazmania    schedule 04.05.2014