【发布时间】: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
【问题讨论】:
-
您或许可以将stackoverflow.com/questions/26341753/…(显示输入框之前)与stackoverflow.com/questions/35205587/…(显示输入框之后)结合起来
-
其中提到的解决方案之一是创建一个 COM,不幸的是,这不是我的选择。使用窗口名称重新激活它的另一种选择也是不可能的,因为我有几个名称完全相同的窗口。
标签: vbscript