575 lines
14 KiB
Plaintext
575 lines
14 KiB
Plaintext
VERSION 5.00
|
|
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
|
|
Begin VB.Form ISAdminForm
|
|
Caption = "Indexing Service Admin Sample"
|
|
ClientHeight = 5676
|
|
ClientLeft = 2220
|
|
ClientTop = 3036
|
|
ClientWidth = 10920
|
|
LinkTopic = "ISAdmin"
|
|
MouseIcon = "ISAdmin.frx":0000
|
|
ScaleHeight = 5676
|
|
ScaleWidth = 10920
|
|
Begin MSComctlLib.ListView ListView1
|
|
Height = 4335
|
|
Left = 3480
|
|
TabIndex = 6
|
|
Top = 1200
|
|
Width = 7215
|
|
_ExtentX = 12721
|
|
_ExtentY = 7641
|
|
LabelWrap = -1 'True
|
|
HideSelection = -1 'True
|
|
_Version = 393217
|
|
ForeColor = -2147483640
|
|
BackColor = -2147483643
|
|
BorderStyle = 1
|
|
Appearance = 1
|
|
NumItems = 0
|
|
End
|
|
Begin MSComctlLib.TreeView TreeView1
|
|
Height = 4335
|
|
Left = 120
|
|
TabIndex = 5
|
|
Top = 1200
|
|
Width = 3255
|
|
_ExtentX = 5736
|
|
_ExtentY = 7641
|
|
_Version = 393217
|
|
LabelEdit = 1
|
|
LineStyle = 1
|
|
Style = 6
|
|
Appearance = 1
|
|
End
|
|
Begin VB.Timer Timer1
|
|
Left = 9840
|
|
Top = 480
|
|
End
|
|
Begin VB.CommandButton StopCisvc
|
|
Caption = "Stop"
|
|
Height = 255
|
|
Left = 6120
|
|
TabIndex = 4
|
|
Top = 240
|
|
Width = 1095
|
|
End
|
|
Begin VB.CommandButton StartCisvc
|
|
Caption = "Start"
|
|
Height = 255
|
|
Left = 4560
|
|
TabIndex = 3
|
|
Top = 240
|
|
Width = 1215
|
|
End
|
|
Begin VB.CommandButton Connect
|
|
Caption = "Connect"
|
|
Height = 255
|
|
Left = 3240
|
|
TabIndex = 2
|
|
Top = 240
|
|
Width = 1095
|
|
End
|
|
Begin VB.TextBox Text1
|
|
Height = 285
|
|
Left = 1680
|
|
TabIndex = 1
|
|
Text = "Local Machine"
|
|
Top = 240
|
|
Width = 1335
|
|
End
|
|
Begin VB.Label Label1
|
|
Caption = "Computer Name"
|
|
Height = 255
|
|
Left = 240
|
|
TabIndex = 0
|
|
Top = 240
|
|
Width = 1215
|
|
End
|
|
End
|
|
Attribute VB_Name = "ISAdminForm"
|
|
Attribute VB_GlobalNameSpace = False
|
|
Attribute VB_Creatable = False
|
|
Attribute VB_PredeclaredId = True
|
|
Attribute VB_Exposed = False
|
|
'+-------------------------------------------------------------------------
|
|
'
|
|
' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
|
|
' ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
|
|
' THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
|
|
' PARTICULAR PURPOSE.
|
|
'
|
|
' Copyright 1998-1999, Microsoft Corporation. All Rights Reserved.
|
|
'
|
|
' PROGRAM: VBAdmin
|
|
'
|
|
' PURPOSE: Illustrates how to administer Indexing Service
|
|
' using Visual Basic and the Admin Helper API.
|
|
'
|
|
' PLATFORM: Windows 2000
|
|
'
|
|
'--------------------------------------------------------------------------
|
|
|
|
Option Explicit
|
|
|
|
' Global variables.
|
|
|
|
Public gCiAdmin As Object
|
|
Public gfRightPressed As Boolean
|
|
Public gfLVRightMouse As Boolean
|
|
|
|
' Module level variables.
|
|
|
|
Dim AdminScopesPage As AdminScopes
|
|
Dim CatalogConfigPage As AdminCatalog
|
|
Dim AddCatalogPage As AddCatalog
|
|
Dim mNode As Node ' Node index.
|
|
Dim mtcIndex ' tree control index.
|
|
Dim mTVNodeCount As Integer
|
|
Dim blnScopesExpanded As Boolean
|
|
Private UpCount As Integer
|
|
|
|
' Resize variables.
|
|
|
|
Private InitialWidth As Integer
|
|
Private InitialHeight As Integer
|
|
Private FormWidth As Integer
|
|
Private FormHeight As Integer
|
|
Private NonListViewWidth As Integer
|
|
Private NonListViewHeight As Integer
|
|
Private NonTreeViewHeight As Integer
|
|
|
|
' Win32 API used.
|
|
|
|
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
|
|
|
|
Public Sub Connect_Click()
|
|
|
|
On Error GoTo ErrorHandler
|
|
|
|
Connect.Enabled = False
|
|
|
|
Set gCiAdmin = Nothing
|
|
|
|
' Create Indexing Service Admin object.
|
|
Set gCiAdmin = CreateObject("Microsoft.ISAdm")
|
|
|
|
' Set MachineName to administer IS, if not local.
|
|
If Text1.Text <> "Local Machine" Then
|
|
gCiAdmin.MachineName = Text1.Text
|
|
End If
|
|
|
|
If (gCiAdmin.IsRunning) Then
|
|
StopCisvc.Enabled = True
|
|
StartCisvc.Enabled = False
|
|
Else
|
|
StopCisvc.Enabled = False
|
|
StartCisvc.Enabled = True
|
|
End If
|
|
|
|
ListView1.ListItems.Clear
|
|
TreeView1.Nodes.Clear
|
|
|
|
' Configure TreeView.
|
|
TreeView1.Sorted = True
|
|
Set mNode = TreeView1.Nodes.Add()
|
|
mNode.Text = "Catalogs"
|
|
TreeView1.LabelEdit = 1
|
|
TreeView1.Style = tvwPlusMinusText
|
|
|
|
' Configure ListView.
|
|
ListView1.View = lvwReport
|
|
|
|
Call PopulateCatalogTreeView
|
|
Call MakeCatalogColumns
|
|
|
|
ErrorHandler:
|
|
|
|
If (Err.Number) Then
|
|
MsgBox (Err.Description)
|
|
Text1.Text = "Local Machine"
|
|
End If
|
|
|
|
Connect.Enabled = True
|
|
|
|
End Sub
|
|
Private Sub Form_Load()
|
|
|
|
On Error GoTo ErrorHandler
|
|
|
|
Timer1.Enabled = False
|
|
Timer1.Interval = 5000 ' 5 second refresh rate for catalog properties.
|
|
|
|
' Initialize an Indexing Service Admin object.
|
|
Call Connect_Click
|
|
|
|
' For resize.
|
|
InitialWidth = ISAdminForm.Width
|
|
InitialHeight = ISAdminForm.Height
|
|
FormWidth = ISAdminForm.Width
|
|
FormHeight = ISAdminForm.Height
|
|
NonListViewWidth = ISAdminForm.Width - ListView1.Width
|
|
NonListViewHeight = ISAdminForm.Height - ListView1.Height
|
|
NonTreeViewHeight = ISAdminForm.Height - TreeView1.Height
|
|
|
|
ErrorHandler:
|
|
If (Err.Number) Then
|
|
MsgBox (Err.Description)
|
|
End If
|
|
|
|
End Sub
|
|
|
|
' Adjust the ListView and Catalog positions on resize.
|
|
|
|
Private Sub Form_Resize()
|
|
|
|
If ISAdminForm.Width < InitialWidth Then
|
|
ISAdminForm.Width = InitialWidth
|
|
End If
|
|
|
|
If ISAdminForm.Height < 5000 Then
|
|
If FormHeight < InitialHeight Then
|
|
ISAdminForm.Height = FormHeight
|
|
Else
|
|
ISAdminForm.Height = InitialHeight
|
|
End If
|
|
End If
|
|
|
|
FormWidth = ISAdminForm.Width
|
|
FormHeight = ISAdminForm.Height
|
|
|
|
ListView1.Width = ISAdminForm.Width - NonListViewWidth
|
|
ListView1.Height = ISAdminForm.Height - NonListViewHeight
|
|
TreeView1.Height = ISAdminForm.Height - NonTreeViewHeight
|
|
|
|
End Sub
|
|
|
|
Private Sub PopulateCatalogTreeView()
|
|
|
|
On Error GoTo ErrorHandler
|
|
|
|
mtcIndex = mNode.Index
|
|
Dim nodX As Node
|
|
Dim fFound As Boolean
|
|
|
|
' Loop thru Indexing Service catalogs populating the tree control.
|
|
fFound = gCiAdmin.FindFirstCatalog
|
|
|
|
Dim CiCatalog As Object
|
|
Dim lItem As ListItem
|
|
mTVNodeCount = 1
|
|
|
|
While (fFound)
|
|
|
|
mTVNodeCount = mTVNodeCount + 1
|
|
|
|
Set CiCatalog = gCiAdmin.GetCatalog()
|
|
|
|
Set nodX = TreeView1.Nodes.Add(mtcIndex, tvwChild, , CiCatalog.CatalogName)
|
|
|
|
nodX.Tag = CiCatalog.CatalogLocation
|
|
|
|
Set lItem = ListView1.ListItems.Add(, , CiCatalog.CatalogLocation)
|
|
|
|
Set CiCatalog = Nothing
|
|
|
|
fFound = gCiAdmin.FindNextCatalog
|
|
|
|
Wend
|
|
|
|
ErrorHandler:
|
|
Set CiCatalog = Nothing
|
|
Set lItem = Nothing
|
|
|
|
If (Err.Number) Then
|
|
MsgBox (Err.Description)
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub ClearCatalogColumns()
|
|
ListView1.ColumnHeaders.Clear
|
|
ListView1.ListItems.Clear
|
|
End Sub
|
|
|
|
Private Sub MakeCatalogColumns()
|
|
|
|
On Error GoTo ErrorHandler
|
|
|
|
ListView1.ColumnHeaders.Clear
|
|
ListView1.ListItems.Clear
|
|
|
|
' Set ListView column headers.
|
|
ListView1.ColumnHeaders.Add , , "Location"
|
|
ListView1.ColumnHeaders.Add , , "Index Size (MB)"
|
|
ListView1.ColumnHeaders.Add , , "IsIndex Up To Date"
|
|
ListView1.ColumnHeaders.Add , , "Pending Scan Count"
|
|
ListView1.ColumnHeaders.Add , , "Documents To Filter"
|
|
ListView1.ColumnHeaders.Add , , "Filtered Document Count"
|
|
ListView1.ColumnHeaders.Add , , "Total Document Count"
|
|
ListView1.ColumnHeaders.Add , , "% Merge"
|
|
|
|
Dim CiCatalog As Object
|
|
Dim lItem As ListItem
|
|
Dim fFound As Boolean
|
|
|
|
' Loop, getting each catalog status info.
|
|
fFound = gCiAdmin.FindFirstCatalog
|
|
|
|
While (fFound)
|
|
Set CiCatalog = gCiAdmin.GetCatalog
|
|
|
|
Set lItem = ListView1.ListItems.Add(, , CiCatalog.CatalogLocation)
|
|
|
|
If (gCiAdmin.IsRunning) Then
|
|
lItem.SubItems(1) = CiCatalog.IndexSize
|
|
lItem.SubItems(2) = CiCatalog.IsUpToDate
|
|
lItem.SubItems(3) = CiCatalog.PendingScanCount
|
|
lItem.SubItems(4) = CiCatalog.DocumentsToFilter
|
|
lItem.SubItems(5) = CiCatalog.FilteredDocumentCount
|
|
lItem.SubItems(6) = CiCatalog.TotalDocumentCount
|
|
lItem.SubItems(7) = CiCatalog.PctMergeComplete
|
|
End If
|
|
|
|
Timer1.Enabled = True ' Enable timer.
|
|
|
|
GetMoreProperties:
|
|
Set CiCatalog = Nothing
|
|
Set lItem = Nothing
|
|
fFound = gCiAdmin.FindNextCatalog
|
|
Wend
|
|
|
|
ErrorHandler:
|
|
blnScopesExpanded = False
|
|
Set CiCatalog = Nothing
|
|
Set lItem = Nothing
|
|
|
|
If (Err.Number) Then
|
|
If (fFound) Then
|
|
GoTo GetMoreProperties
|
|
End If
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub MakeScopesColumns(ByVal CatalogName As String)
|
|
|
|
On Error GoTo ErrorHandler
|
|
|
|
Timer1.Enabled = False ' Disable timer, need only for catalog status.
|
|
|
|
ListView1.ColumnHeaders.Clear
|
|
ListView1.ListItems.Clear
|
|
|
|
' Set ListView column headers.
|
|
ListView1.ColumnHeaders.Add , , "Directory"
|
|
ListView1.ColumnHeaders.Add , , "Alias"
|
|
ListView1.ColumnHeaders.Add , , "Include in Catalog"
|
|
ListView1.ColumnHeaders.Add , , "Virtual"
|
|
|
|
Dim CiCatalog As Object
|
|
Dim CiScope As Object
|
|
Dim fFound As Boolean
|
|
Dim lItem As ListItem
|
|
|
|
' Get Indexing Service catalog object, then enumerate its scopes.
|
|
Set CiCatalog = gCiAdmin.GetCatalogByName(CatalogName)
|
|
|
|
fFound = CiCatalog.FindFirstScope
|
|
While (fFound)
|
|
Set CiScope = CiCatalog.GetScope()
|
|
|
|
Set lItem = ListView1.ListItems.Add(, , CiScope.Path)
|
|
|
|
lItem.SubItems(1) = CiScope.Alias
|
|
lItem.SubItems(3) = CiScope.VirtualScope
|
|
lItem.Tag = CiCatalog.CatalogName
|
|
|
|
If CiScope.ExcludeScope Then
|
|
lItem.SubItems(2) = False
|
|
Else
|
|
lItem.SubItems(2) = True
|
|
End If
|
|
|
|
fFound = CiCatalog.FindNextScope
|
|
|
|
Set CiScope = Nothing
|
|
Set lItem = Nothing
|
|
Wend
|
|
|
|
' Set this flag only if we successfully finish.
|
|
blnScopesExpanded = True
|
|
|
|
ErrorHandler:
|
|
|
|
Set CiCatalog = Nothing
|
|
Set CiScope = Nothing
|
|
Set lItem = Nothing
|
|
|
|
End Sub
|
|
|
|
|
|
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
|
|
|
|
On Error GoTo ErrorHandler
|
|
|
|
If (blnScopesExpanded = False Or gfLVRightMouse = False) Then
|
|
Exit Sub
|
|
End If
|
|
|
|
Static fActive As Boolean
|
|
|
|
If (fActive) Then
|
|
fActive = False
|
|
Exit Sub
|
|
End If
|
|
|
|
' Create the AdminScopes form.
|
|
Set AdminScopesPage = New AdminScopes
|
|
|
|
AdminScopesPage.RemoveScopeSel = True
|
|
AdminScopesPage.FullRescanSel = False
|
|
AdminScopesPage.IncRescanSel = False
|
|
|
|
AdminScopesPage.CatName = Item.Tag
|
|
AdminScopesPage.ScopeName = Item.Text
|
|
|
|
AdminScopesPage.Show vbModal
|
|
|
|
Call MakeScopesColumns(Item.Tag)
|
|
|
|
ErrorHandler:
|
|
If (Err.Number) Then
|
|
MsgBox (Err.Description)
|
|
End If
|
|
|
|
fActive = True
|
|
|
|
End Sub
|
|
|
|
Private Sub ListView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
|
|
|
|
If (Button = vbRightButton) Then
|
|
gfLVRightMouse = True
|
|
Else
|
|
gfLVRightMouse = False
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub StartCisvc_Click()
|
|
|
|
On Error GoTo ErrorHandler
|
|
|
|
Dim DefaultMousePointer As Integer
|
|
DefaultMousePointer = MousePointer
|
|
MousePointer = 11 ' Hour glass.
|
|
|
|
gCiAdmin.Start ' Start cisvc.exe service.
|
|
Sleep (30000) ' Give time for cisvc.exe to run.
|
|
StopCisvc.Enabled = True
|
|
StartCisvc.Enabled = False
|
|
|
|
ErrorHandler:
|
|
MousePointer = DefaultMousePointer
|
|
|
|
If (Err.Number) Then
|
|
MsgBox (Err.Description)
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub StopCisvc_Click()
|
|
|
|
On Error GoTo ErrorHandler
|
|
|
|
Dim DefaultMousePointer As Integer
|
|
DefaultMousePointer = MousePointer
|
|
MousePointer = 11 ' Hour glass.
|
|
|
|
gCiAdmin.Stop ' Stop cisvc.exe service.
|
|
|
|
StopCisvc.Enabled = False
|
|
StartCisvc.Enabled = True
|
|
|
|
ErrorHandler:
|
|
MousePointer = DefaultMousePointer
|
|
|
|
If (Err.Number) Then
|
|
MsgBox (Err.Description)
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub Timer1_Timer()
|
|
If (gCiAdmin.IsRunning) Then
|
|
Call MakeCatalogColumns
|
|
End If
|
|
End Sub
|
|
|
|
|
|
Private Sub TreeView1_Collapse(ByVal Node As MSComctlLib.Node)
|
|
Timer1.Enabled = False
|
|
Call ClearCatalogColumns
|
|
End Sub
|
|
|
|
Private Sub TreeView1_Expand(ByVal Node As MSComctlLib.Node)
|
|
Call MakeCatalogColumns
|
|
End Sub
|
|
|
|
|
|
Private Sub TreeView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
|
|
|
|
If (Button = vbRightButton) Then
|
|
gfRightPressed = True
|
|
Else
|
|
gfRightPressed = False
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
|
|
|
|
On Error GoTo ErrorHandler
|
|
|
|
If Node.Text <> "Catalogs" Then
|
|
If (gfRightPressed) Then
|
|
Call OperationsOnCatalog(Node.Text)
|
|
Else
|
|
MakeScopesColumns (Node.Text)
|
|
End If
|
|
ElseIf Node.Text = "Catalogs" Then
|
|
If (gfRightPressed) Then
|
|
Call AddCatalogMethod
|
|
ElseIf Node.Expanded Then
|
|
MakeCatalogColumns
|
|
End If
|
|
End If
|
|
|
|
ErrorHandler:
|
|
If (Err.Number) Then
|
|
MsgBox (Err.Description)
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub OperationsOnCatalog(ByVal strCatName As String)
|
|
|
|
Set CatalogConfigPage = New AdminCatalog
|
|
|
|
CatalogConfigPage.ScanAllScopesOption.Value = True
|
|
CatalogConfigPage.Tag = strCatName
|
|
|
|
CatalogConfigPage.Show vbModal
|
|
|
|
Call MakeScopesColumns(strCatName)
|
|
|
|
End Sub
|
|
|
|
Private Sub AddCatalogMethod()
|
|
|
|
Set AddCatalogPage = New AddCatalog
|
|
|
|
AddCatalogPage.Show vbModal
|
|
|
|
Call Connect_Click ' Refresh the catalog list.
|
|
|
|
End Sub
|