我想使用 VBScript 将地址注入“远程桌面连接”提示。有人特别告诉我,我必须使用Windows 自动化 API来执行此操作,但在阅读文档后,我没有找到任何可用于 VBScript 的东西。我该如何进行?
PS:正如 Helen 和这个线程所指出的,目前不支持 VBScript 访问 UI 自动化 API。
我想使用 VBScript 将地址注入“远程桌面连接”提示。有人特别告诉我,我必须使用Windows 自动化 API来执行此操作,但在阅读文档后,我没有找到任何可用于 VBScript 的东西。我该如何进行?
PS:正如 Helen 和这个线程所指出的,目前不支持 VBScript 访问 UI 自动化 API。
您实际上并不需要 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 自动化提供了AppActivate
和SendKeys
方法,但它们并不是万无一失的。
我建议使用 GUI 自动化工具,例如AutoIt(它是免费的)。在 AutoIt 脚本中,您可以使用该ControlSetText
函数更改输入字段中的文本,例如:
Run("notepad.exe")
WinWait("[CLASS:Notepad]")
ControlSetText("[CLASS:Notepad]", "", "Edit1", "Hello, world!")
您还可以使用 AutoIt 的 AU3Recorder 来记录用户操作,这样您就不必手动编写脚本。