windows-nt/Source/XPSP1/NT/inetsrv/query/sdk/vbadmin/isadmin.frm
2020-09-26 16:20:57 +08:00

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