从 Excel 连接到 RDP
Connection to RDP from Excel
我看到很多论坛都在谈论从 Excel 文件启动远程桌面连接。
我也看到了这段代码,它很好用。
Sub OpenRDP()
Dim MyRDP As Variant
MyLink = "c:\windows\system32\mstsc.exe /v:" & ActiveCell.Value
MyRDP = Shell(MyLink, 1)
End Sub
但是,在我的 Excel 文件中,有一列我有主机地址,旁边是一列密码。
我的问题是:是否可以启动 RDP 并将主机 IP 地址和密码传递给它?如果是,它是如何完成的?
谢谢!
由于您只是通过 shell 调用一个命令,您实际上并没有对以编程方式启动的应用程序(在本例中为 RDP)的句柄。所以你不能做这样的事情:
MyRDP.Password = Range("B2").value
但是,您可以使用 Application.Sendkeys
将按键发送到 windows,它将盲目地应用到您发送命令时光标恰好所在的位置。
假设您的密码存储在同一行,但在上方的列(相邻单元格):
Application.SendKeys (ActiveCell.Offset(, 1).Value & "{ENTER}")
正在发送您的密码和 "Enter" 按键以接受密码。
因为 RDP 需要一点时间才能弹出,所以您不能在调用 shell 命令后就把那行扔进去。你必须等待一些时间。 5 秒在我的电脑上运行得很好,但你的电脑可能更慢或更快,所以你可能不得不在这里胡闹一下:
Sub OpenRDP()
Dim MyRDP As Variant
Dim MyLink As String
MyLink = "c:\windows\system32\mstsc.exe /v:" & ActiveCell.Value
MyRDP = Shell(MyLink, 1)
'wait five seconds and send password in adjacent cell of same row
Application.Wait (Now() + TimeValue("0:00:5"))
Application.SendKeys (ActiveCell.Offset(, 1).Value & "{ENTER}")
End Sub
我毫不怀疑,通过查询 WMI 的 运行 进程并等待 RDP 弹出来执行发送密钥,或者搜索一个库以帮助与 RDP 交互,这可能会复杂大约 10000 倍代码,但是...对于两行代码,此方法将使您走得更远。
此外,(因为值得一提),将您的密码存储在 excel 中并不是非常安全。任何有权访问您的工作簿的人都可以访问您的远程桌面。即使工作簿有密码保护,也可以一键破解。
我看到很多论坛都在谈论从 Excel 文件启动远程桌面连接。
我也看到了这段代码,它很好用。
Sub OpenRDP()
Dim MyRDP As Variant
MyLink = "c:\windows\system32\mstsc.exe /v:" & ActiveCell.Value
MyRDP = Shell(MyLink, 1)
End Sub
但是,在我的 Excel 文件中,有一列我有主机地址,旁边是一列密码。
我的问题是:是否可以启动 RDP 并将主机 IP 地址和密码传递给它?如果是,它是如何完成的?
谢谢!
由于您只是通过 shell 调用一个命令,您实际上并没有对以编程方式启动的应用程序(在本例中为 RDP)的句柄。所以你不能做这样的事情:
MyRDP.Password = Range("B2").value
但是,您可以使用 Application.Sendkeys
将按键发送到 windows,它将盲目地应用到您发送命令时光标恰好所在的位置。
假设您的密码存储在同一行,但在上方的列(相邻单元格):
Application.SendKeys (ActiveCell.Offset(, 1).Value & "{ENTER}")
正在发送您的密码和 "Enter" 按键以接受密码。
因为 RDP 需要一点时间才能弹出,所以您不能在调用 shell 命令后就把那行扔进去。你必须等待一些时间。 5 秒在我的电脑上运行得很好,但你的电脑可能更慢或更快,所以你可能不得不在这里胡闹一下:
Sub OpenRDP()
Dim MyRDP As Variant
Dim MyLink As String
MyLink = "c:\windows\system32\mstsc.exe /v:" & ActiveCell.Value
MyRDP = Shell(MyLink, 1)
'wait five seconds and send password in adjacent cell of same row
Application.Wait (Now() + TimeValue("0:00:5"))
Application.SendKeys (ActiveCell.Offset(, 1).Value & "{ENTER}")
End Sub
我毫不怀疑,通过查询 WMI 的 运行 进程并等待 RDP 弹出来执行发送密钥,或者搜索一个库以帮助与 RDP 交互,这可能会复杂大约 10000 倍代码,但是...对于两行代码,此方法将使您走得更远。
此外,(因为值得一提),将您的密码存储在 excel 中并不是非常安全。任何有权访问您的工作簿的人都可以访问您的远程桌面。即使工作簿有密码保护,也可以一键破解。