【问题标题】:VBScript - Reactivate previous window after using inputboxVBScript - 使用输入框后重新激活上一个窗口
【发布时间】:2017-01-21 12:23:18
【问题描述】:

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

  • 我在我的应用程序中,准备输入文本。
  • 我使用快捷键来启动 VBScript,比如 CTRL-ALT-T
  • 输入框打开
  • 我输入一个数字
  • 输入框关闭,Windows XP 自动返回到我的应用程序
  • 正在将文本放入应用程序中

但 Windows 7 的任务行为略有不同。当一个窗口在 W7 中关闭时,前一个窗口出现在屏幕上,但未被主动选择。结果,文本没有被放在那个窗口中。

有没有办法让窗口主动被选中?

我对 VBScript 形式的解决方案感兴趣。但是,如果有人碰巧知道改变 Windows 7 行为的解决方案,使其在这个问题上表现得像 Windows XP,那也会很有趣。总的来说,我发现旧的行为更方便。

这是一个简短的脚本示例:

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

【问题讨论】:

标签: vbscript


【解决方案1】:

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

Shell.SendKeys("%{ESC}")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多