Attribute VB_Name = "Module1"
Global Const LISTVIEW_BUTTON = 11
    
Public fMainForm As frmMain


Sub Main()
    frmSplash.Show
    frmSplash.Refresh
    
    Set fMainForm = New frmMain
    Load fMainForm
    Unload frmSplash


    fMainForm.Show
End Sub



Sub LoadResStrings(frm As Form)
    On Error Resume Next


    Dim ctl As Control
    Dim obj As Object
    Dim fnt As Object
    Dim sCtlType As String
    Dim nVal As Integer


    'set the form's caption
    frm.Caption = LoadResString(CInt(frm.Tag))
    

    'set the font
    Set fnt = frm.Font
    fnt.Name = LoadResString(20)
    fnt.Size = CInt(LoadResString(21))
    

    'set the controls' captions using the caption
    'property for menu items and the Tag property
    'for all other controls
    For Each ctl In frm.Controls
        Set ctl.Font = fnt
        sCtlType = TypeName(ctl)
        If sCtlType = "Label" Then
            ctl.Caption = LoadResString(CInt(ctl.Tag))
        ElseIf sCtlType = "Menu" Then
            ctl.Caption = LoadResString(CInt(ctl.Caption))
        ElseIf sCtlType = "TabStrip" Then
            For Each obj In ctl.Tabs
                obj.Caption = LoadResString(CInt(obj.Tag))
                obj.ToolTipText = LoadResString(CInt(obj.ToolTipText))
            Next
        ElseIf sCtlType = "Toolbar" Then
            For Each obj In ctl.Buttons
                obj.ToolTipText = LoadResString(CInt(obj.ToolTipText))
            Next
        ElseIf sCtlType = "ListView" Then
            For Each obj In ctl.ColumnHeaders
                obj.Text = LoadResString(CInt(obj.Tag))
            Next
        Else
            nVal = 0
            nVal = Val(ctl.Tag)
            If nVal > 0 Then ctl.Caption = LoadResString(nVal)
            nVal = 0
            nVal = Val(ctl.ToolTipText)
            If nVal > 0 Then ctl.ToolTipText = LoadResString(nVal)
        End If
    Next


End Sub


Sub PopulateTree(ByRef TreeCtl As TreeView, ByVal Path As String)
    
    Dim mb As IMSMetaBase
    Set mb = CreateObject("IISAdmin.Object")
    Dim i As Long
    Dim bytePath() As Byte
    Dim mk As IMSMetaKey
    
    Rem Dim tmpPath() As Byte
        
    On Error Resume Next
    
    Debug.Print ("Adding " & Path)
        
    i = 0

    Set mk = mb.OpenKey(dwAccessRequested:=1, vaTimeOut:=100)
    
    If (Err.Number <> 0) Then
        Debug.Print ("Enum Object Error Code = " & Err.Number)
        Err.Clear
        Exit Sub
    End If

    Do
        ' Convert the Basic string to an ANSI byte array and
        ' open this path
        
        bytePath = StrConv(Path & Chr(0), vbFromUnicode)
        mk.EnumKeys pvaName:=tmpPath, dwEnumObjectIndex:=i, pvaPath:=bytePath
                
        If (Err.Number < 0) Then
            Debug.Print ("Enum Object Error Code = " & Err.Number)
            Err.Clear
            Exit Do
        End If
            
        ' Convert the returned byte array to a string
        
        Dim Tmp As String
        
        Tmp = ""
        j = 0
        Do While (tmpPath(j) > 0)
            Tmp = Tmp & Chr(tmpPath(j))
            j = j + 1
        Loop
            
        ' Add this node to the tree
        
        NewPath = Path & Tmp & "/"
        
        ' Make sure the root virtual directory isn't blank
        
        If (Tmp = "") Then
            Tmp = "/"
        End If
        
        Err.Clear           ' Some adds result in a non-fatal error 424
        Dim Nodx As Node    ' Declare Node variable.
        Set Nodx = TreeCtl.Nodes.Add(Path, tvwChild, NewPath, Tmp)
        
        If (Err.Number <> 0) Then
            Debug.Print ("Adding Node to tree Error Code = " & Err.Number & " " & Err.Description)
            Err.Clear
            Rem Exit Do
        End If
        
        ' Recursively traverse this path and show and expanded tree
        
        PopulateTree TreeCtl, NewPath
        Nodx.Expanded = True
        
        i = i + 1
    Loop While (True)
    
    mk.Close
    
    If (Err.Number <> 0) Then
        Debug.Print ("Error closing handle = " & Err.Number & " " & Err.Description)
        Err.Clear
        Rem Exit Do
    End If
    
End Sub