📜  默认主机 vbox 地址 - VBA (1)

📅  最后修改于: 2023-12-03 15:29:01.801000             🧑  作者: Mango

默认主机 vbox 地址 - VBA

默认主机 vbox 地址 - VBA,是一个用于获取 VirtualBox 中已经定义的虚拟机地址的 VBA 函数。

使用方法
  1. 首先,请确保已经安装 VirtualBox,因为该函数需要 VirtualBox 的支持。如果还没有安装,请前往 VirtualBox 官网下载并按照官方步骤进行安装。
  2. 打开 Microsoft Excel 文档,按下 Alt + F11 进入 VBA 编辑器。
  3. 在工程中添加 vbox.bas 文件中的代码。
  4. 在需要调用此函数的地方,输入 =VBOX() 即可获取 VirtualBox 默认主机地址。
注意事项
  • 如果 VirtualBox 的安装路径不同,请修改 vbox.basVirtualBoxPath 的值。
  • 如果需要获取已经定义的虚拟机地址,需要先在 VirtualBox 中定义虚拟机,且该虚拟机需要处于已启动状态。
Function VBOX() As String
    Dim VirtualBoxPath As String
    VirtualBoxPath = "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe"
    
    ' 获取默认主机名称
    Dim HostName As String
    HostName = ""
    Dim HostCommand As String
    HostCommand = VirtualBoxPath & " list hosts"
    Shell (HostCommand), vbHide
    Dim HostInfo As String
    HostInfo = ""
    Open "C:\WINDOWS\system32\drivers\etc\hosts" For Input As #1
    Do While Not EOF(1)
        Line Input #1, HostInfo
        If InStr(1, HostInfo, "#") = 0 Then
            If InStr(1, HostInfo, "127.0.0.1") > 0 Then
                HostName = Right(HostInfo, Len(HostInfo) - InStr(1, HostInfo, " "))
            End If
        End If
    Loop
    Close #1
    
    ' 获取默认主机地址
    Dim DefaultVMCommand As String
    DefaultVMCommand = VirtualBoxPath & " --nologo guestproperty get " & HostName & " /VirtualBox/GuestInfo/Net/0/V4/IP"
    Dim DefaultVMInfo As String, DefaultVMAddr As String
    DefaultVMInfo = ""
    DefaultVMAddr = ""
    Open "C:\WINDOWS\system32\drivers\etc\hosts" For Input As #1
    Do While Not EOF(1)
        Line Input #1, DefaultVMInfo
        If InStr(1, DefaultVMInfo, "=") > 0 Then
            DefaultVMAddr = Right(DefaultVMInfo, Len(DefaultVMInfo) - InStrRev(DefaultVMInfo, "="))
            Exit Do
        End If
    Loop
    Close #1
    
    VBOX = DefaultVMAddr
End Function