2013-11-07 24 views
4

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

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

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

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

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

' 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 
+0

Только это я правильно понимаю: вы хотите найти приложение (часть) его заголовка окна с помощью VBScript в Windows? – Tomalak

+0

Невозможно с помощью сценария gapps –

+0

Да Тамалак. Сценарий запускается при запуске и обнаруживает окно при открытии, а затем закрывает его. Я редактировал исходное сообщение, чтобы включить сценарий, о котором я упоминал в первом абзаце. – user2116516

ответ

6
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 будет последовательно закрывать окна, пока он не захочет, чтобы закрыть окна сам. kinda заставляет меня нервничать, хотя этот скрипт будет определять только имя, которое вы ему даете.

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

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