VERSION 5.00 Begin {B3E55942-FFD8-11D1-9788-44A620524153} FileViewer ClientHeight = 9330 ClientLeft = 0 ClientTop = 0 ClientWidth = 10740 _ExtentX = 18944 _ExtentY = 16457 m_iNextNodeNumber= 0 Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 BeginProperty ImageLists {FFF9A8F6-06CB-11D2-9791-50C320524153} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Count = 1 KeysOnly = 0 BeginProperty Item1 {87BC1809-C8FB-11D1-B44A-30F4BC000000} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Name = "imgToolbar" Index = 1 Key = "imgToolbar" MaskColor = 0 BeginProperty ListImages {87BC180B-C8FB-11D1-B44A-30F4BC000000} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Count = 1 KeysOnly = 0 BeginProperty Item1 {87BC180D-C8FB-11D1-B44A-30F4BC000000} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Index = 1 Key = "" Tag = "0" Picture = "FileViewerExtension.dsx":0000 EndProperty EndProperty DISPID = 1002 EndProperty EndProperty BeginProperty Menus {11517450-27FE-11D3-AA41-00104B880587} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Count = 1 KeysOnly = 0 BeginProperty Item1 {91CC37D5-CE2B-11D1-B44D-7E92AF000000} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Caption = "Menu1" Visible = -1 Checked = 0 Enabled = -1 Grayed = 0 MenuBreak = 0 MenuBarBreak = 0 Default = 0 Index = 1 Name = "ViewerMenu" Tag = 0 StatusBarText = "" BeginProperty Children {11517450-27FE-11D3-AA41-00104B880587} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Count = 1 KeysOnly = 0 BeginProperty Item1 {91CC37D5-CE2B-11D1-B44D-7E92AF000000} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Caption = "View File..." Visible = -1 Checked = 0 Enabled = -1 Grayed = 0 MenuBreak = 0 MenuBarBreak = 0 Default = 0 Index = 1 Name = "ViewFile" Tag = 0 StatusBarText = "View the selected file" BeginProperty Children {11517450-27FE-11D3-AA41-00104B880587} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Count = 0 KeysOnly = 0 EndProperty Key = "1" DISPID = 1001 EndProperty EndProperty Key = "1" DISPID = 1000 EndProperty EndProperty BeginProperty Toolbars {FFF9A8FA-06CB-11D2-9791-50C320524153} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Count = 2 KeysOnly = 0 BeginProperty Item1 {91CC37E1-CE2B-11D1-B44D-7E92AF000000} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Index = 1 Key = "tbrViewer" Name = "tbrViewer" Tag = "0" BeginProperty Buttons {8B034115-FBB2-11D1-9785-EAA220524153} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Count = 1 KeysOnly = 0 BeginProperty Item1 {91CC37E6-CE2B-11D1-B44D-7E92AF000000} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 BeginProperty ButtonMenus {91CC37E7-CE2B-11D1-B44D-7E92AF000000} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Count = 0 KeysOnly = 0 EndProperty Caption = "View File..." Enabled = -1 Image = 1 Index = 1 Key = "" MixedState = 0 Style = 0 Tag = "" ToolTipText = "View File Contents..." Value = 0 Visible = -1 EndProperty EndProperty Images = "imgToolbar" DISPID = 1003 EndProperty BeginProperty Item2 {91CC37E1-CE2B-11D1-B44D-7E92AF000000} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Index = 2 Key = "tbrMenuButton" Name = "tbrMenuButton" Tag = 0 BeginProperty Buttons {8B034115-FBB2-11D1-9785-EAA220524153} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Count = 1 KeysOnly = 0 BeginProperty Item1 {91CC37E6-CE2B-11D1-B44D-7E92AF000000} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 BeginProperty ButtonMenus {91CC37E7-CE2B-11D1-B44D-7E92AF000000} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Count = 1 KeysOnly = 0 BeginProperty Item1 {91CC37E9-CE2B-11D1-B44D-7E92AF000000} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Enabled = -1 Index = 1 Key = "" Tag = "" Text = "View File..." Visible = -1 Checked = 0 Grayed = 0 Separator = 0 MenuBreak = 0 MenuBarBreak = 0 EndProperty EndProperty Caption = "FileViewer" Enabled = -1 Image = "" Index = 1 Key = "" MixedState = 0 Style = 16 Tag = "" ToolTipText = "" Value = 0 Visible = -1 EndProperty EndProperty Images = "" DISPID = 1004 EndProperty EndProperty BeginProperty ViewDefs {FFF9A8E1-06CB-11D2-9791-50C320524153} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 BeginProperty ListViews {FFF9A8FC-06CB-11D2-9791-50C320524153} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Count = 0 KeysOnly = 0 EndProperty BeginProperty OCXViews {FFF9A8FF-06CB-11D2-9791-50C320524153} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Count = 0 KeysOnly = 0 EndProperty BeginProperty URLViews {FFF9A902-06CB-11D2-9791-50C320524153} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Count = 0 KeysOnly = 0 EndProperty BeginProperty TaskpadViews {FFF9A904-06CB-11D2-9791-50C320524153} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Count = 0 KeysOnly = 0 EndProperty EndProperty BeginProperty DataFormats {91FE14C5-7370-11D2-97D8-00104B880587} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Count = 0 KeysOnly = 0 EndProperty BeginProperty SnapInDef {FFF9A8E4-06CB-11D2-9791-50C320524153} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Name = "FileViewer" NodeTypeName = "FileViewerExtension" NodeTypeGUID = "{D42F4543-CD95-11d2-97ED-00104B880587}" DisplayName = "FileViewerExtension" Type = 1 HelpFile = "" LinkedTopics = "" Description = "Visual Basic Sample Extension Snap-in for FileExplorer" Provider = "Microsoft Corporation" Version = "1.0" SmallFolders = "" SmallFoldersOpen= "" LargeFolders = "" Icon = "FileViewerExtension.dsx":0352 Watermark = "FileViewerExtension.dsx":03B0 Header = "FileViewerExtension.dsx":040E Palette = "FileViewerExtension.dsx":046C StretchWatermark= 0 StaticFolder = 0 DefaultView = "" Extensible = 0 BeginProperty ViewDefs {FFF9A8E1-06CB-11D2-9791-50C320524153} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 BeginProperty ListViews {FFF9A8FC-06CB-11D2-9791-50C320524153} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Count = 0 KeysOnly = 1 EndProperty BeginProperty OCXViews {FFF9A8FF-06CB-11D2-9791-50C320524153} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Count = 0 KeysOnly = 1 EndProperty BeginProperty URLViews {FFF9A902-06CB-11D2-9791-50C320524153} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Count = 0 KeysOnly = 1 EndProperty BeginProperty TaskpadViews {FFF9A904-06CB-11D2-9791-50C320524153} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Count = 0 KeysOnly = 1 EndProperty EndProperty BeginProperty Children {FFF9A8F4-06CB-11D2-9791-50C320524153} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Count = 0 KeysOnly = 0 EndProperty IID = "{B51C28E4-22E9-4DE4-AD63-18E947617268}" Preload = 0 EndProperty BeginProperty ExtensionDefs {FFF9A8E6-06CB-11D2-9791-50C320524153} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 ExtendsNewMenu = 0 ExtendsTaskMenu = 0 ExtendsTopMenu = 0 ExtendsViewMenu = 0 ExtendsPropertyPages= 0 ExtendsToolbar = 0 ExtendsNameSpace= 0 BeginProperty ExtendedSnapIns {BDA4B9D1-0872-11D2-9791-50C320524153} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Count = 3 KeysOnly = 0 BeginProperty Item1 {FFF9A8E8-06CB-11D2-9791-50C320524153} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Name = "" Index = 1 Key = "{119067F7-4DBC-11D2-8873-0080C7E0ACE4}" CLSID = "{119067F7-4DBC-11D2-8873-0080C7E0ACE4}" DisplayName = "Directory" Dynamic = 0 ExtendsNameSpace= 0 ExtendsNewMenu = 0 ExtendsTaskMenu = 0 ExtendsPropertyPages= -1 ExtendsToolbar = 0 ExtendsTaskpad = 0 EndProperty BeginProperty Item2 {FFF9A8E8-06CB-11D2-9791-50C320524153} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Name = "" Index = 2 Key = "{873CAEF3-4DA3-11D2-8873-0080C7E0ACE4}" CLSID = "{873CAEF3-4DA3-11D2-8873-0080C7E0ACE4}" DisplayName = "FileExplorer" Dynamic = 0 ExtendsNameSpace= 0 ExtendsNewMenu = 0 ExtendsTaskMenu = 0 ExtendsPropertyPages= 0 ExtendsToolbar = 0 ExtendsTaskpad = -1 EndProperty BeginProperty Item3 {FFF9A8E8-06CB-11D2-9791-50C320524153} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Name = "" Index = 3 Key = "{D2B294B2-9F64-11d2-97E1-00104B880587}" CLSID = "{D2B294B2-9F64-11d2-97E1-00104B880587}" DisplayName = "lvExporerFiles" Dynamic = 0 ExtendsNameSpace= 0 ExtendsNewMenu = 0 ExtendsTaskMenu = -1 ExtendsPropertyPages= -1 ExtendsToolbar = -1 ExtendsTaskpad = 0 EndProperty EndProperty EndProperty BeginProperty AutoCreateNodes {FFF9A8F4-06CB-11D2-9791-50C320524153} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Count = 0 KeysOnly = 0 EndProperty BeginProperty OtherNodes {FFF9A8F4-06CB-11D2-9791-50C320524153} Persistence.MajorVersion= 0 Persistence.MinorVersion= 12 Count = 0 KeysOnly = 0 EndProperty TypeinfoCookie = 24 ProjectName = "FileViewerExtensionProj" End Attribute VB_Name = "FileViewer" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = True Attribute VB_PredeclaredId = False Attribute VB_Exposed = True Option Explicit ' =========================================================================== ' | 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 (c) 1998-1999 Microsoft Corporation | ' =========================================================================== ' ============================================================================= ' File: FileViewerExtension.dsr ' Project: FileViewerExtensionProj ' Type: SnapIn Designer ' ============================================================================= ' ============================================================================= ' Method: ExtensionSnapIn_AddTaskMenuItems ' Type: Event ' Description: Fired when a context menu is about to be displayed to give the ' extension snap-in the opportunity to add items to MMC's "Task" ' sub-menu. ' ' Parameters: DataObjects An MMCDataObject collection that contains the ' current selection. The extension snap-in must ' interpret the data exported by the extended ' snap-ins (in this case FileExplorer exports the ' data) ' ContextMenu A ContextMenu object that allows adding the ' snap-in's menus. ' Output: None ' Notes: Adds ViewerMenu containing the "View File..." item. ' ============================================================================= ' Private Sub ExtensionSnapIn_AddTaskMenuItems(ByVal DataObjects As SnapInLib.IMMCDataObjects, _ ByVal ContextMenu As SnapInLib.IContextMenu) On Error GoTo ErrTrap_ExtensionSnapIn_AddTaskMenuItems ' If there is anything other than a single data object then we ignore it ' as FileExplorer exports one MMCDataObject with the format "File" when the ' selected item is a single file. If DataObjects.Count <> 1 Then Exit Sub End If ' If the selected item exports the data format called "File" then it is a ' file and we add our Task menu If Not DataObjects(1).GetFormat("File") Then Exit Sub End If ContextMenu.AddMenu ViewerMenu Exit Sub ' Error Handler for this method ErrTrap_ExtensionSnapIn_AddTaskMenuItems: DisplayError "ExtensionSnapIn_AddTaskMenuItems" End Sub ' ============================================================================= ' Method: ExtensionSnapIn_AddTasks ' Type: Event ' Description: Fired when a taskpad is about to be displayed to give the ' extension snap-in the opportunity to add its tasks. ' ' Parameters: DataObject An MMCDataObject that contains the currently ' selected scope item. The extension snap-in must ' interpret the data exported by the extended ' snap-in (in this case FileExplorer exports the ' data) ' GroupName The group name of the taskpad. For VB implemented ' taskpads this is the taskpad name assigned in the ' designer. ' Tasks An empty collection of Task objects. The ' extension snap-in must add its tasks to the ' collection. ' Output: None ' Notes: Adds the "About FileViewer" task. ' ============================================================================= ' Private Sub ExtensionSnapIn_AddTasks(ByVal DataObject As SnapInLib.IMMCDataObject, _ ByVal GroupName As String, _ ByVal Tasks As SnapInLib.ITasks) On Error GoTo ErrTrap_ExtensionSnapIn_AddTasks ' If FileExplorer is displaying its welcome taskpad then add our About task. If GroupName = "StaticNodeTaskpad" Then Dim ViewerTask As Task Set ViewerTask = Tasks.Add ViewerTask.ActionType = siNotify ViewerTask.HelpString = "About the FileViewer Extension Sample..." ViewerTask.ImageType = siSymbol ViewerTask.FontFamily = "GLYPH 100" ViewerTask.EOTFile = "res://mmc.exe/glyph100.eot" ViewerTask.SymbolString = "T" ViewerTask.Text = "About FileViewer" End If Exit Sub ' Error Handler for this method ErrTrap_ExtensionSnapIn_AddTasks: DisplayError "ExtensionSnapIn_AddTasks" End Sub ' ============================================================================= ' Method: ExtensionSnapIn_TaskClick ' Type: Event ' Description: Fired when the user clicks a task owned by the extension snap-in ' in a default taskpad owned by the extended snap-in. ' ' Parameters: DataObject An MMCDataObject that contains the currently ' selected scope item. The extension snap-in must ' interpret the data exported by the extended ' snap-in (in this case FileExplorer exports the ' data) ' Task The Task clicked ' ' Output: None ' Notes: We only have one task that displays an "About" message box. ' ============================================================================= ' Private Sub ExtensionSnapIn_TaskClick(ByVal DataObject As SnapInLib.IMMCDataObject, _ ByVal Task As SnapInLib.ITask) On Error GoTo ErrTrap_ExtensionSnapIn_TaskClick ' Note that as an extension snap-in we do not have access to the ' ConsoleMsgBox method so we need to use a VB message box. MsgBox "Snap-in Designer for Visual Basic 6.0" & Chr$(13) & Chr$(10) & _ "Sample Extension to the FileExplorer Sample" & Chr$(13) & Chr$(10) & _ "Adds taskpad, context menu, property page, and toolbar extensions.", _ vbOKOnly, "FileViewer" Exit Sub ' Error Handler for this method ErrTrap_ExtensionSnapIn_TaskClick: DisplayError "ExtensionSnapIn_TaskClick" End Sub ' ============================================================================= ' Method: ExtensionSnapIn_CreatePropertyPages ' Type: Event ' Description: Fired when the user requests properties for the selected item. ' Gives the extension snap-in the opportunity to add its pages ' to the property sheet being displayed ' by MMC for the selected item. ' ' Parameters: DataObject An MMCDataObject that contains the currently ' selected scope item. The extension snap-in must ' interpret the data exported by the extended ' snap-in (in this case FileExplorer exports the ' data) ' PropertySheet PropertySheet object used to add the snap-in's ' property pages. ' ' Output: None ' Notes: For files add the ppgViewFile page. For folders add the ' ppgDirStats page. ' An important difference between primary and extensions snap-ins ' is that the extension does not receive a QueryPagesFor event. ' The extension is not required to add pages in this event but ' it will always be fired. ' ============================================================================= ' Private Sub ExtensionSnapIn_CreatePropertyPages(ByVal DataObject As SnapInLib.MMCDataObject, _ ByVal PropertySheet As SnapInLib.MMCPropertySheet) On Error GoTo ErrTrap_ExtensionSnapIn_CreatePropertyPages Dim Folders() As String Dim Folder As String Dim Files() As String Dim File As String Dim i As Integer ' Check the exported data formats to determine the nature of the selected ' items and display the appropriate property pages. For multiple selections pass ' the index of the folder or path as the InitData parameter. The property page will ' receive it in IMMCPropertyPage_Initialize and store it for use later in ' PropertyPage_SelectedControls. ' Use "Viewer: " as the caption. If DataObject.GetFormat("File") Then File = FormatData(DataObject.GetData("File"), 1, siString) PropertySheet.AddPage "ppgViewFile", "Viewer: " & File ElseIf DataObject.GetFormat("Files") Then ' Get the "Files" format that contains a string array. Files = FormatData(DataObject.GetData("Files"), 1, siMultiString) For i = 1 To UBound(Files) PropertySheet.AddPage "ppgViewFile", "Viewer: " & Files(i), _ True, False, Str(i) Next i End If ' For folders, there is only one piece of data - the folder's path. We pass that ' directly in the InitData parameter. ' Use "Viewer: " as the caption. If DataObject.GetFormat("Folder") Then Folder = FormatData(DataObject.GetData("Folder"), 1, siString) PropertySheet.AddPage "ppgDirStats", "Viewer: " & Folder, True, False, Folder ElseIf DataObject.GetFormat("Folders") Then Folders = FormatData(DataObject.GetData("Folders"), 1, siMultiString) For i = 1 To UBound(Folders) PropertySheet.AddPage "ppgDirStats", "Viewer: " & Folders(i), _ True, False, Folders(i) Next i End If Exit Sub ' Error Handler for this method ErrTrap_ExtensionSnapIn_CreatePropertyPages: DisplayError "ExtensionSnapIn_CreatePropertyPages" End Sub ' ============================================================================= ' Method: ExtensionSnapIn_SetControlbar ' Type: Event ' Description: Fired before a view is displayed. It allows an extension snap-in ' to add or remove its toolbars and menu buttons. ' Parameters: Controlbar A reference to the controlling object that ' manages the snap-in's toolbars and menu buttons ' Output: None ' Notes: Add our toolbar and menu button ' ============================================================================= ' Private Sub ExtensionSnapIn_SetControlbar(ByVal Controlbar As SnapInLib.IMMCControlbar) On Error GoTo ErrTrap_ExtensionSnapIn_SetControlbar Controlbar.Attach tbrViewer Controlbar.Attach tbrMenuButton Exit Sub ' Error Handler for this method ErrTrap_ExtensionSnapIn_SetControlbar: DisplayError "ExtensionSnapIn_SetControlbar" End Sub ' ============================================================================= ' Method: ExtensionSnapIn_UpdateControlbar ' Type: Event ' Description: Called following a selection change to allow the snap-in to ' update its toolbar(s) and menu buttons according to the ' selected item(s). ' Parameters: SelectionInScopePane Indicates whether the selection is in the ' scope pane or in the result pane. ' DataObjects An MMCDataObject collection that contains ' the current selection. The extension snap-in ' must interpret the data exported by the ' extended snap-ins (in this case FileExplorer ' exports the data) ' Selected A boolean showing whether the items are ' being selected or de-selected ' Controlbar A reference to the controlling object that ' manages the snap-in's toolbars and menu ' buttons ' Output: None ' Notes: Examine the selection and determine whether to enable the toolbar ' button. Always enable the menu button. If the user clicks ' the menu button we will enable/disable the individual menu ' items according to the selection. (See ' tbrMenuButton_ButtonDropDown above). ' ============================================================================= ' Private Sub ExtensionSnapIn_UpdateControlbar(ByVal SelectionInScopePane As Boolean, _ ByVal Selected As Boolean, _ ByVal DataObjects As SnapInLib.IMMCDataObjects, _ ByVal Controlbar As SnapInLib.IMMCControlbar) On Error GoTo ErrTrap_ExtensionSnapIn_UpdateControlbar Dim ButtonEnabled As Boolean ' If the selected item exports the data format called "File" then it is a ' file and we enable our "View File" toolbar button. If SelectionInScopePane Or _ (Not Selected) Or _ (Not DataObjects(1).GetFormat("File")) Then ButtonEnabled = False Else ButtonEnabled = True End If tbrViewer.Buttons(1).Enabled = ButtonEnabled ' Always enable the menu button, but enable/disable the menu item in the drop-down ' based on the selection. tbrMenuButton.Buttons(1).Enabled = True tbrMenuButton.Buttons(1).ButtonMenus(1).Grayed = Not ButtonEnabled Exit Sub ' Error Handler for this method ErrTrap_ExtensionSnapIn_UpdateControlbar: DisplayError "ExtensionSnapIn_UpdateControlbar" End Sub ' ============================================================================= ' Method: tbrMenuButton_ButtonMenuClick ' Type: Event ' Description: Fired when a Toolbar button is clicked ' ' Parameters: Selection A reference to an MMCClipboard object that is ' holding a reference to the currently selected ' item(s). Note that even though the selection is ' held in an MMCClipboard object, its ScopeItems and ' ListItems collection will always be empty in an ' extension snap-in because the selected items(s) ' belong to the extended snap-in (FileExplorer in ' this case). The extension snap-in must interpret ' the exported data in MMCClipboard.DataObjects. ' ButtonMenu A reference to the MMCButtonMenu object attached to ' the menu item selected. ' Output: None ' Notes: Calls DisplayFile to do the work. ' ============================================================================= ' Private Sub tbrMenuButton_ButtonMenuClick(ByVal Selection As SnapInLib.IMMCClipboard, _ ByVal ButtonMenu As SnapInLib.IMMCButtonMenu) DisplayFile Selection End Sub ' ============================================================================= ' Method: tbrViewer_ButtonClick ' Type: Event ' Description: Fired when a Toolbar button is clicked ' ' Parameters: Selection A reference to an MMCClipboard object that is ' holding a reference to the currently selected ' item(s). Note that even though the selection is ' held in an MMCClipboard object, its ScopeItems and ' ListItems collection will always be empty in an ' extension snap-in because the selected items(s) ' belong to the extended snap-in (FileExplorer in ' this case). The extension snap-in must interpret ' the exported data in MMCClipboard.DataObjects. ' Button A reference to the MMCButton object attached to ' the toolbar button clicked. ' Output: None ' Notes: Calls DisplayFile to do the work. ' ============================================================================= ' Private Sub tbrViewer_ButtonClick(ByVal Selection As SnapInLib.IMMCClipboard, _ ByVal Button As SnapInLib.IMMCButton) DisplayFile Selection End Sub ' ============================================================================= ' Method: ViewFile_Click ' Type: Event ' Description: Fired when the "View File..." context menu item is selected. ' ' Parameters: Index This will always be 1 as we are directly handling ' the event on the individual menu item rather than ' the event on its parent. ' Selection A reference to an MMCClipboard object that is ' holding a reference to the currently selected ' item(s). Note that even though the selection is ' held in an MMCClipboard object, its ScopeItems and ' ListItems collection will always be empty in an ' extension snap-in because the selected items(s) ' belong to the extended snap-in (FileExplorer in ' this case). The extension snap-in must interpret ' the exported data in MMCClipboard.DataObjects. ' Output: None ' Notes: Calls DisplayFile to do the work. ' ============================================================================= ' Private Sub ViewFile_Click(ByVal Index As Long, _ ByVal Selection As SnapInLib.IMMCClipboard) DisplayFile Selection End Sub ' ============================================================================= ' Method: DisplayFile ' Type: Event ' Description: Fired when the "View File..." context menu item is selected. ' ' Parameters: Selection A reference to an MMCClipboard object that is ' holding a reference to the currently selected ' item(s). Note that even though the selection is ' held in an MMCClipboard object, its ScopeItems and ' ListItems collection will always be empty in an ' extension snap-in because the selected items(s) ' belong to the extended snap-in (FileExplorer in ' this case). The extension snap-in must interpret ' the exported data in MMCClipboard.DataObjects. ' Output: None ' Notes: Gets the file name from the exported data and displays the ' file viewer form ' ============================================================================= ' Private Sub DisplayFile(Selection As MMCClipboard) On Error GoTo ErrTrap_DisplayFile Dim FileName As String Dim Path As String Dim ViewerForm As frmFileViewer ' If there is anything other than a single data object then we ignore it ' as FileExplorer exports one MMCDataObject with the format "File" when the ' selected item is a single file. If Selection.DataObjects.Count <> 1 Then Exit Sub End If ' If the "File" format is present then extract the name display our form ' with the contents of the file. If Not Selection.DataObjects(1).GetFormat("File") Then Exit Sub End If FileName = Selection.DataObjects(1).GetData("File") Path = Selection.DataObjects(1).GetData("Path") Set ViewerForm = New frmFileViewer ViewerForm.DisplayFile Path, FileName Unload ViewerForm Exit Sub ' Error Handler for this method ErrTrap_DisplayFile: DisplayError "DisplayFile" End Sub ' ============================================================================= ' Method: DisplayError ' Type: Subroutine ' Description: A method to format and display a runtime error ' Parameters: szLocation A string identifying the source location ' (i.e. method name) where the error occurred ' Output: None ' Notes: The error will be displayed in a messagebox formatted as the ' following sample: ' ' Method: SomeMethodName ' Source: MMCListSubItems ' Error: 2527h (9511) ' Description: There is already an item in the collection that has the specified key ' ' ============================================================================= ' Private Sub DisplayError(szLocation As String) ' Note that as an extension snap-in we do not have access to the ' ConsoleMsgBox method so we need to use a VB message box. MsgBox "Method:" & vbTab & vbTab & szLocation & vbCrLf _ & "Source:" & vbTab & vbTab & Err.Source & vbCrLf _ & "Error:" & vbTab & vbTab & Hex(Err.Number) & "h (" & CStr(Err.Number) & ")" & vbCrLf _ & "Description:" & vbTab & Err.Description, _ vbCritical, "FileViewerExtension Runtime Error" End Sub