vbscript自动检测打开的窗口并将其关闭或使用Google Apps脚本来控制表单提交按钮

时间:2013-11-07 19:19:04

标签: vbscript google-apps-script kiosk kiosk-mode

过去我使用下面的脚本来检测标题为“远程桌面”的活动窗口是否处于活动状态。如果它不活动,脚本将自动启动或再次激活。

问题:有没有办法检测窗口是否处于活动状态并自动关闭它?我正在办公室的Windows 7机器上以chrome kiosk模式设置一个售货亭。主页面在弹出窗口中启动选定的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 

1 个答案:

答案 0 :(得分:7)

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 将依次关闭窗口,直到它想要关闭窗口本身。有点让我紧张,即使这个脚本只会检测你给它的名字。

我试过这个脚本并且它工作正常但是对于某些窗口使用转义键呢?

另一件我不喜欢的事情是它始终在运行并占用资源。我放慢了循环,所以它至少会在大部分时间在后台暂停..

相关问题