2

我想使用 VBScript 将地址注入“远程桌面连接”提示。有人特别告诉我,我必须使用Windows 自动化 API来执行此操作,但在阅读文档后,我没有找到任何可用于 VBScript 的东西。我该如何进行?

PS:正如 Helen 和这个线程所指出的,目前不支持 VBScript 访问 UI 自动化 API。

4

1 回答 1

9

您实际上并不需要 GUI 自动化。要指定要连接的计算机,只需mstsc使用/v命令行参数启动,例如:

CreateObject("WScript.Shell").Run "mstsc /v:computername"

或者,如果您有一个包含计算机名称和连接设置的.rdp 文件mstsc,您可以使用以下命令启动此文件:

CreateObject("WScript.Shell").Run "mstsc E:\ComputerName.rdp"

如果需要,您可以即时生成 .rdp 文件,如下所示:

Dim oFSO, oShell, strFileName, strComputerName

strComputerName = "computername"
strFileName = "E:\ComputerName.rdp"

Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oStream = oFSO.CreateTextFile(strFileName, True)
oStream.WriteLine "full address:s:" + strComputerName
' TODO: Write other settings
oStream.Close

Set oShell = CreateObject("WScript.Shell")
oShell.Run "mstsc """ + strFileName + """"

回复评论:

但是我想要实现的不是 RDP-ing 的任务,而是实际的注入本身(这可能会推广到不同应用程序的不同窗口)。

Windows Script Host 为 GUI 自动化提供了AppActivateSendKeys方法,但它们并不是万无一失的。

我建议使用 GUI 自动化工具,例如AutoIt(它是免费的)。在 AutoIt 脚本中,您可以使用该ControlSetText函数更改输入字段中的文本,例如:

Run("notepad.exe")
WinWait("[CLASS:Notepad]")
ControlSetText("[CLASS:Notepad]", "", "Edit1", "Hello, world!")

您还可以使用 AutoIt 的 AU3Recorder 来记录用户操作,这样您就不必手动编写脚本。

于 2013-05-20T10:17:01.060 回答