VBScript-使用inputbox后重新激活上一个窗口

VBScript-使用inputbox后重新激活上一个窗口,vbscript,Vbscript,对于我的工作,我经常需要在应用程序中输入标准文本,以显示已采取的操作。 在以前的一份工作中,我一直在使用一个VBScript,我发现它工作得非常好。它所做的是打开一个输入框,输入一个数字,然后脚本运行相应的子例程,输入您请求的文本。 在下面,您可以找到它如何工作的示例脚本。 过去我在Windows XP中使用过它,它工作得非常好: 我在我的应用程序中,准备输入文本 我使用快捷键启动VBScript,比如CTRL-ALT-T 输入框打开 我输入一个数字 输入框关闭,Windows XP自动返回到

对于我的工作,我经常需要在应用程序中输入标准文本,以显示已采取的操作。 在以前的一份工作中,我一直在使用一个VBScript,我发现它工作得非常好。它所做的是打开一个输入框,输入一个数字,然后脚本运行相应的子例程,输入您请求的文本。 在下面,您可以找到它如何工作的示例脚本。 过去我在Windows XP中使用过它,它工作得非常好:

  • 我在我的应用程序中,准备输入文本
  • 我使用快捷键启动VBScript,比如CTRL-ALT-T
  • 输入框打开
  • 我输入一个数字
  • 输入框关闭,Windows XP自动返回到我的应用程序
  • 正在将文本放入应用程序中
但Windows7的任务行为略有不同。当窗口在W7中关闭时,屏幕上会出现上一个窗口,但未被主动选择。因此,文本不会被放入该窗口

有没有办法使窗口处于活动选择状态

我对VBScript形式的解决方案感兴趣。但是,如果有人碰巧知道一个解决方案来改变Windows7的行为,使其在这个问题上的行为类似于WindowsXP,那也会很有趣。总的来说,我觉得旧的行为更方便

下面是脚本的一个简短示例:

'-----------------------------
'VBScript for inputting text
'-----------------------------

Option Explicit
Dim oFS, oWS, oWN, Shell

Set oWS = WScript.CreateObject("WScript.Shell")
Set oWN = WScript.CreateObject("WScript.Network")
Set oFS = WScript.CreateObject("Scripting.FileSystemObject")
Set Shell = CreateObject("WScript.Shell")
'-------
' Menu
'-------
Select Case InputBox ( _
"Enter type of comment, then press enter or click Ok..." & vbCrlf & vbCrlf & _
" [1] Text 1" & vbCrlf & _
" [2] Text 2", _
"Menu")

Case "1"
Call sub1()
Case "2"
Call sub2()

Case Else
WScript.Echo "You entered an invalid menu choice!"

End Select

Call CleanUp

'------------
' Subroutines
'------------

'------------------
Sub CleanUp()
Set oWS = Nothing
Set oWN = Nothing
Set oFS = Nothing
WScript.Quit
End Sub

'------------------
Sub sub1()

WScript.Sleep 500
Shell.SendKeys "Standard text 1{ENTER}"

End Sub

'------------------
Sub sub2()

WScript.Sleep 500
Shell.SendKeys "Standard text 2{ENTER}"

End Sub

我找到了一个简单的解决方案,我已经用了几天了,没有任何问题。我在每个子项的开头添加了以下代码:

Shell.SendKeys("%{ESC}")

您可以(在显示输入框之前)与(在显示输入框之后)结合使用上面提到的解决方案之一,即创建COM,不幸的是,这不是我的选项。使用窗口名称重新激活它的另一个选项也是不可能的,因为我有几个窗口的名称完全相同。