Vanara/Windows.Shell/AssemblyReport.md

32 KiB

Assembly report for Vanara.Windows.Shell.dll

Classes for Windows Shell items derived from the Vanara PInvoke libraries. Includes shell items, files, icons, links, and taskbar lists.

Enumerations

Enum Description Values
Vanara.Windows.Shell.ChangeFilters Changes that might occur to a shell item or folder. ItemRenamed, ItemCreated, ItemDeleted, FolderCreated, FolderDeleted, MediaInserted, MediaRemoved, DriveRemoved, DriveAdded, FolderShared, FolderUnshared, Attributes, FolderUpdated, ItemUpdated, ServerDisconnected, SystemImageUpdated, DriveAddedInteractive, FolderRenamed, AllDiskEvents, DriveFreeSpaceChanged, ExtendedEvent, FileAssociationChanged, AllGlobalEvents, AllEvents
Vanara.Windows.Shell.ShellFileOperationDialog.DialogStatus Provides operation status flags for ShellFileOperationDialog. NotStarted, Running, Paused, Cancelled, Stopped, Errors
Vanara.Windows.Shell.ExecutableType Specifies the executable file type. Nonexecutable, DOS, Win32Console, Windows
Vanara.Windows.Shell.FileUsageType Constants used to indicate how a file in use is being used. Playing, Editing, Generic
Vanara.Windows.Shell.FolderItemFilter A filter for the types of children to enumerate. Folders, NonFolders, IncludeHidden, Printers, Shareable, Storage, FastItems, FlatList, IncludeSuperHidden
Vanara.Windows.Shell.LibraryFolderFilter Defines options for filtering folder items. FileSystemOnly, StorageObjects, AllItems
Vanara.Windows.Shell.LibraryViewTemplate Defines the type of view assigned to a library folder. Documents, General, Music, Pictures, Videos, Custom
Vanara.Windows.Shell.LinkResolution Flags determining how the links with missing targets are resolved. None, NoUI, AnyMatch, Update, NoUpdate, NoSearch, NoTrack, NoLinkInfo, InvokeMSI, NoUIWithMsgPump, OfferDeleteWithoutFile, KnownFolder, MachineInLocalTarget, UpdateMachineAndSid, NoObjectID
Vanara.Windows.Shell.NavigationLogDirection The direction argument for NavigateFromHistory() Forward, Backward
Vanara.Windows.Shell.ShellFileOperations.OperationFlags Flags that control the file operation. MultiDestFiles, Silent, RenameOnCollision, NoConfirmation, WantMappingHandle, AllowUndo, FilesOnly, SimpleProgress, NoConfirmMkDir, NoErrorUI, NoUI, NoCopySecurityAttribs, NoRecursion, NoConnectedElements, WantNukeWarning, NoSkipJunctions, PreferHardLink, ShowElevationPrompt, RecycleOnDelete, EarlyFailure, PreserveFileExtensions, KeepNewerFile, NoCopyHooks, NoMinimizeBox, MoveACLsAcrossVolumes, DontDisplaySourcePath, DontDisplayDestPath, RequireElevation, AddUndoRecord, CopyAsDownload, DontDisplayLocations
Vanara.Windows.Shell.ShellFileOperationDialog.OperationMode Flags used in Mode Default, Running, Starting, Undoing, BlockedByErrors, Indeterminate
Vanara.Windows.Shell.ShellFileOperationDialog.OperationType Describes an action being performed that requires progress to be shown to the user using progress dialog. None, Moving, Copying, Recycling, ApplyingAttributes, Downloading, SearchingInternet, Calculating, Uploading, SearchingFiles, Deleting, Renaming, Formatting, CopyMoving
Vanara.Windows.Shell.SFVMUD Undocumented Flags used by Vanara.PInvoke.Shell32.IShellFolderViewCB.MessageSFVCB(Vanara.PInvoke.Shell32.SFVM,System.IntPtr,System.IntPtr,System.IntPtr@) Callback Handler. SFVM_SELECTIONCHANGED, SFVM_DRAWMENUITEM, SFVM_MEASUREMENUITEM, SFVM_EXITMENULOOP, SFVM_VIEWRELEASE, SFVM_GETNAMELENGTH, SFVM_WINDOWCLOSING, SFVM_LISTREFRESHED, SFVM_WINDOWFOCUSED, SFVM_REGISTERCOPYHOOK, SFVM_COPYHOOKCALLBACK, SFVM_ADDINGOBJECT, SFVM_REMOVINGOBJECT, SFVM_GETCOMMANDDIR, SFVM_GETCOLUMNSTREAM, SFVM_CANSELECTALL, SFVM_ISSTRICTREFRESH, SFVM_ISCHILDOBJECT, SFVM_GETEXTVIEWS, SFVM_GET_CUSTOMVIEWINFO, SFVM_ENUMERATEDITEMS, SFVM_GET_VIEW_DATA, SFVM_GET_WEBVIEW_LAYOUT, SFVM_GET_WEBVIEW_CONTENT, SFVM_GET_WEBVIEW_TASKS, SFVM_GET_WEBVIEW_THEME, SFVM_GETDEFERREDVIEWSETTINGS
Vanara.Windows.Shell.ShellBrowserViewMode Indicates the viewing mode of the ShellBrowser Icon, SmallIcon, List, Details, Thumbnail, Tile, ThumbStrip, Content, Auto
Vanara.Windows.Shell.ShellIconType The type of icon to be returned from Vanara.Windows.Shell.ShellFileInfo.GetIcon(Vanara.Windows.Shell.ShellIconType). Large, Small, Open, ShellDefinedSize, LinkOverlay, Selected
Vanara.Windows.Shell.ShellImageSize Used to determine the size of the icon returned by ShellImageList.GetSystemIcon. Large, Small, ExtraLarge, SystemSmall, Jumbo
Vanara.Windows.Shell.ShellItemAttribute Attributes that can be retrieved on an item (file or folder) or set of items using Vanara.Windows.Shell.ShellItem.Attributes. CanCopy, CanMove, CanLink, Storage, CanRename, CanDelete, HasPropSheet, DropTarget, CapabilityMask, System, Encrypted, IsSlow, Ghosted, Link, Share, ReadOnly, Hidden, DisplayAttrMask, NonEnumerated, NewContent, CanMoniker, HasStorage, Stream, StorageAncestor, Validate, Removable, Compressed, Browsable, FileSysAncestor, Folder, FileSystem, StorageCapMask, HasSubfolder, ContentsMask, PKEYMask
Vanara.Windows.Shell.ShellItemComparison Used to determine how to compare two Shell items. ShellItem.Compare uses this enumerated type. Display, Canonical, SecondaryFileSystemPath, AllFields
Vanara.Windows.Shell.ShellItemDisplayString Requests the form of an item's display name to retrieve through Vanara.Windows.Shell.ShellItem.GetDisplayName(Vanara.Windows.Shell.ShellItemDisplayString). NormalDisplay, ParentRelativeParsing, DesktopAbsoluteParsing, ParentRelativeEditing, DesktopAbsoluteEditing, FileSysPath, Url, ParentRelativeForAddressBar, ParentRelative, ParentRelativeForUI
Vanara.Windows.Shell.ShellItemGetImageOptions Options for retrieving images from a Vanara.Windows.Shell.ShellItem. ResizeToFit, BiggerSizeOk, MemoryOnly, IconOnly, ThumbnailOnly, InCacheOnly, CropToSquare, WideThumbnails, IconBackground, ScaleUp
Vanara.Windows.Shell.ShellItemToolTipOptions Flags that direct the handling of the item from which you're retrieving the info tip text. Default, Name, LinkNotTarget, LinkTarget, AllowDelay, SingleLine
Vanara.Windows.Shell.TaskbarButtonProgressState State of the progress shown on a taskbar button. None, Indeterminate, Normal, Error, Paused
Vanara.Windows.Shell.TaskbarItemTabThumbnailOption Specifies taskbar button thumbnail tab properties. TabWindow, MainWindow, MainWindowWhenActive
Vanara.Windows.Shell.ShellFileOperations.TransferFlags Used by methods of the ITransferSource and ITransferDestination interfaces to control their file operations. Normal, FailExist, RenameExist, OverwriteExist, AllowDecryption, NoSecurity, CopyCreationTime, CopyWriteTime, UseFullAccess, DeleteRecycleIfPossible, CopyHardLink, CopyLocalizedName, MoveAsCopyDelete, SuspendShellEvents
Vanara.Windows.Shell.VerbMultiSelectModel A value that determines if a user can select a single item, multiple items, or a selection from an item. Unset, Player, Single, Document
Vanara.Windows.Shell.VerbPosition Determines the placement of a verb in a menu. Undefined, Top, Bottom
Vanara.Windows.Shell.VerbSelectionModel Determines menu location. Item, BackgroundShortcutMenu
Vanara.Windows.Shell.Visibility Visible, Hidden, Collapsed
Vanara.Windows.Shell.WallpaperFit Specifies how the desktop wallpaper should be displayed. Center, Tile, Stretch, Fit, Fill, Span

Interfaces

Interface Description
Vanara.Windows.Shell.IComObject Exposed methods from Vanara.Windows.Shell.ComObject.
Vanara.Windows.Shell.IJumpListItem Represents a Jump List item.

Classes

Class Description
Vanara.Windows.ExtenderProviderBase.AddExtenderEventArgs Arguments for the Vanara.Windows.ExtenderProviderBase1.AddingExtender` event.
Vanara.Windows.Shell.Registration.AppRegistration Represents the registration entries for an application.
Vanara.Windows.Shell.BindContext Wraps the System.Runtime.InteropServices.ComTypes.IBindCtx COM type.
Vanara.Windows.Shell.ComClassFactory An implementation of Vanara.PInvoke.Ole32.IClassFactory to be used in conjunction with Vanara.Windows.Shell.IComObject derivatives.
Vanara.Windows.Shell.CommandVerb Encapsulates a shortcut menu verb in the registry.
Vanara.Windows.Shell.CommandVerbDictionary A dictionary of Command Verbs defined in the Windows Registry.
Vanara.Windows.Shell.ComObject Base class for all COM objects which handles calling AddRef and Release for the assembly, connection to IClassFactory, implements IObjectWithSite, using an internal message loop, and a mechanism to issue a non-blocking call to itself. Once implemented, you only need to implement your own interfaces. The IClassFactory implementation can get any derived interfaces through casting for calls to its QueryInterface method. If you want more control, override the QueryInterface method in this class.
Vanara.Windows.Shell.ComObjWrapper
Vanara.Windows.Shell.ControlPanel Provides a means to open Control Panel items and get their paths.
Vanara.Windows.ExtenderProviderBase A generic base to implement System.ComponentModel.IExtenderProvider for a single extender type.
Vanara.Windows.Shell.FileInUseHandler A handler for applications that open file types that can be opened by other applications. An application's use of this object enables Windows Explorer to discover the source of sharing errors, which enables users to address and retry operations that fail due to those errors. This object handles registering the file with the Running Object Table (see Vanara.PInvoke.Ole32.IRunningObjectTable). It will revoke that registration on disposal or when the Vanara.Windows.Shell.FileInUseHandler.Registered property is set to .
Vanara.Windows.Shell.Registration.FileTypeAssociation Manages registry entries related to file types and file associations.
Vanara.Windows.Shell.FilterShellItemEventArgs Event argument for FilterItem event
Vanara.Windows.Shell.IconLocation Wraps the icon location string used by some Shell classes.
Vanara.Windows.Shell.IndirectResource Wraps a resource reference used by some Shell classes.
Vanara.Windows.Shell.IndirectString Wraps a string resource reference used by some Shell classes.
Vanara.Windows.Shell.JumpList Provides access to the jump list on the application's task bar icon.
Vanara.Windows.Shell.JumpListDestination A file-based destination for a jumplist with an associated category.
Vanara.Windows.Shell.JumpListItem An item in a Jump List.
Vanara.Windows.Shell.JumpListSeparator A separator which can be inserted into a custom list or task list.
Vanara.Windows.Shell.JumpListTask A task for a jumplist.
Vanara.Windows.Shell.MemoryPropertyStore An in-memory property store.
Vanara.Windows.Shell.ShellContextMenu.MenuItemInfo Provides information about a single menu entry discovered in a native menu.
Vanara.PInvoke.MessageLoop.MessageEventArgs Holds a copy of the MSG instance retrieved by GetMessage.
Vanara.PInvoke.MessageLoop This class encapsulates the management of a message loop for an application. It supports queuing a callback to the application via the message loop to enable the app to return from a call and continue processing that call later. This behavior is needed when implementing a shell verb as verbs must not block the caller. The ComObject derived class should call QueueNonBlockingCallback in its invoke function, for example IExecuteCommand::Execute() or IDropTarget::Drop() passing a method that will complete the initialization work.
Vanara.Windows.Shell.NativeClipboard Initializes and closes a session using the Clipboard calling Vanara.PInvoke.User32.OpenClipboard(Vanara.PInvoke.HWND) and then Vanara.PInvoke.User32.CloseClipboard on disposal. This can be called multiple times in nested calls and will ensure the Clipboard is only opened and closed at the highest scope.
Vanara.Windows.Shell.NavigatedEventArgs Event argument for The Navigated event
Vanara.Windows.Shell.NavigatingEventArgs Event argument for The Navigating event
Vanara.Windows.Shell.NavigationFailedEventArgs Event argument for the NavigatinoFailed event
Vanara.Windows.Shell.ProgId Represents a programmatic identifier in the registry for an application.
Vanara.Windows.Shell.PropertyBag Encapsulates an Vanara.PInvoke.OleAut32.IPropertyBag instance.
Vanara.Windows.Shell.PropertyDescription Enumerate and retrieve individual property description details. Wraps the Vanara.PInvoke.PropSys.IPropertyDescription shell interface
Vanara.Windows.Shell.PropertyDescriptionList Exposes methods that extract information from a collection of property descriptions presented as a list.
Vanara.Windows.Shell.PropertyStore Encapsulates the IPropertyStore object.
Vanara.Windows.Shell.PropertyType Exposes methods that extract data from enumeration information.
Vanara.Windows.Shell.PropertyTypeList Exposes methods that enumerate the possible values for a property.
Vanara.Windows.Shell.ReadOnlyPropertyStore Encapsulates the IPropertyStore object.
Vanara.Windows.Shell.RecycleBin A static object that represents the system Recycle Bin.
Vanara.Windows.Shell.RegBasedDictionary A virtual dictionary that is based on values in the Windows Registry.
Vanara.Windows.Shell.RegBasedSettings Base class for registry based settings.
Vanara.Windows.Shell.SearchCondition Provides properties and methods for retrieving information about a search condition.
Vanara.Windows.Shell.ShellAssociation Represents a Shell file association defined in the Windows Registry. Wraps Vanara.PInvoke.ShlwApi.IQueryAssociations.
Vanara.Windows.Shell.ShellAssociation.ShellAssociationHandler Represents a handler (executable) for a Vanara.Windows.Shell.ShellAssociation.
Vanara.Windows.Shell.ShellBrowser Encapsulates a Vanara.PInvoke.Shell32.IShellBrowser-Implementation within an System.Windows.Forms.UserControl.

Implements the following Interfaces:
-
-
-

For more Information on used techniques see:
-


Known Issues:
- Using windows 10, the virtual Quick-Access folder doesn't get displayed properly. It has to be grouped by "Group" (as shown in Windows Explorer UI), but I couldn't find the OLE-Property for this. Also, if using Groups, the Frequent Files List doesn't have its Icons. Maybe we have to bind to another version of ComCtrls to get this rendered properly - That's just an idea though, cause the Collapse-/Expand-Icons of the Groups have the Windows Vista / Windows 7-Theme, not the Windows 10 Theme as I can see.
- DONE: Keyboard input doesn't work so far.
- DONE: Only Details-Mode should have column headers: (Using Shell32.FOLDERFLAGS.FWF_NOHEADERINALLVIEWS)
https://stackoverflow.com/questions/11776266/ishellview-columnheaders-not-hidden-if-autoview-does-not-choose-details - TODO: CustomDraw, when currently no shellView available
- DONE: Network folder: E_FAIL => DONE: Returning HRESULT.E_NOTIMPL from MessageSFVCB fixes this
- DONE: Disk Drive (empty): E_CANCELLED_BY_USER
- DONE: Disable header in Details view when grouping is enabled - DONE: Creating ViewWindow using '.CreateViewWindow()' fails on Zip-Folders; => Fixed again by returning HRESULT.E_NOTIMPL from MessageSFVCB - TODO: internal static readonly bool IsMinVista = Environment.OSVersion.Version.Major >= 6; // TODO: We use one interface, afaik, that only works in vista and above: IFolderView2 - TODO: Windows 10' Quick Access folder has a special type of grouping, can't find out how this works yet. As soon as we would be able to get all the available properties for an particular item, we would be able found out how this grouping works. However, it seems to be a special group, since folders are Tiles, whereas files are shown in Details mode. - NOTE: The grouping is done by 'Group'. Activate it using "Group by->More->Group", and then do the grouping. However, the Icons for 'Recent Files'-Group get lost. - TODO: ViewMode-Property, Thumbnailsize => Set ThumbnailSize for Large, ExtraLarge, etc. - DONE: Keyboard-Handling - DONE: BrowseObject ->Parent -> Relative - TODO: Properties in design editor!!! - TODO: Write History correctly! - TODO: Check getting / losing Focus! again - TODO: Context-Menu -> "Open File Location" doesn't work on folder "Quick Access" - TODO: When columns get reordered in details mode, then navigate to another folder, then back => column content gets messed NOTE: https://stackoverflow.com/questions/7698602/how-to-get-embedded-explorer-ishellview-to-be-browsable-i-e-trigger-browseobje NOTE: https://stackoverflow.com/questions/54390268/getting-the-current-ishellview-user-is-interacting-with NOTE: https://www.codeproject.com/Articles/35197/Undocumented-List-View-Features // IMPORTANT! NOTE: https://answers.microsoft.com/en-us/windows/forum/windows_10-files-winpc/windows-10-quick-access-folders-grouped-separately/ecd4be4a-1847-4327-8c44-5aa96e0120b8
Vanara.Windows.Shell.ShellBrowserNavigatedEventArgs Event argument for The Navigated event.
Vanara.Windows.Shell.ShellBrowserViewHandler Encapsulates an Vanara.PInvoke.Shell32.IShellFolderViewCB">IShellFolderViewCB</see>-Implementation within an <see cref="T:System.IDisposable-Object. Beside that it's implemented as a Wrapper-Object that is responsible for creating and disposing the following objects aka Interface-Instances:
-
-
-

While doing that, it also handles some common error cases:
- When there's no disk in a disk drive

Implements the following Interfaces:
-

This class make use of some undocumented Messages in its Vanara.PInvoke.Shell32.IShellFolderViewCB.MessageSFVCB(Vanara.PInvoke.Shell32.SFVM,System.IntPtr,System.IntPtr,System.IntPtr@) Callback Handler.

For more Information on these see:
- Google Drive Shell Extension: ShellFolderViewCBHandler.cpp
- ReactOS: IShellFolderViewCB.cpp File Reference , IShellFolderViewCB.cpp
Vanara.Windows.Shell.ShellBrowserViewHandlerExtension Extension methods for Vanara.Windows.Shell.ShellBrowserViewHandler.
Vanara.Windows.Shell.ShellCommand Wraps the functionality of IInitializeCommand. When deriving, handling the Vanara.Windows.Shell.ShellCommand.InitializeCommand event is optional.
Vanara.Windows.Shell.ShellContextMenu Provides support for displaying the context menu of a shell item.
Vanara.Windows.Shell.ShellDataObject Shell extended System.Windows.Forms.DataObject.
Vanara.Windows.Shell.ShellDataTable Represents a System.Data.DataTable that is populated asynchronously with information about shell items.
Vanara.Windows.Shell.ShellDropTarget COM object that implements IDropTarget. Solves race problem on drop and simplifies interface calls. All IDropTarget methods call their equivalent On[MethodName] equivalents. To specialize their handling, simply override the On[MethodName] method or hook an event to the corresponding event.
Vanara.Windows.Shell.ShellExecuteCommand Wraps the functionality of IExecuteCommand. To implement, derive from this class and override the Vanara.Windows.Shell.ShellExecuteCommand.OnExecute method. All Shell items passed to the command are available through the Vanara.Windows.Shell.ShellExecuteCommand.SelectedItems property.
Vanara.Windows.Shell.ShellFileDescriptor Describes the properties of a file that is being copied by means of the clipboard during a Microsoft ActiveX drag-and-drop operation.
Vanara.Windows.Shell.ShellFileInfo Information and icons for any shell file.
Vanara.Windows.Shell.ShellFileOperations.ShellFileNewOpEventArgs Arguments supplied to the Vanara.Windows.Shell.ShellFileOperations.PostNewItem event.
Vanara.Windows.Shell.ShellFileOperationDialog The Shell's progress dialog.
Vanara.Windows.Shell.ShellFileOperations Queued and static file operations using the Shell.
Vanara.Windows.Shell.ShellFileOperations.ShellFileOpEventArgs Arguments supplied to events from Vanara.Windows.Shell.ShellFileOperations. Depending on the event, some properties may not be set.
Vanara.Windows.Shell.ShellFolder A folder or container of Vanara.Windows.Shell.ShellItem instances.
Vanara.Windows.Shell.ShellImageList Represents the System Image List holding images for all shell icons.
Vanara.Windows.Shell.ShellItem Encapsulates an item in the Windows Shell.
Vanara.Windows.Shell.ShellItemArray A folder or container of Vanara.Windows.Shell.ShellItem instances.
Vanara.Windows.Shell.ShellItemChangeWatcher.ShellItemChangeEventArgs Provides data for Vanara.Windows.Shell.ShellItemChangeWatcher events.
Vanara.Windows.Shell.ShellItemChangeWatcher Listens to the shell item change notifications and raises events when a folder, or item in a folder, changes.
Vanara.Windows.Shell.ShellItemImages Exposes methods that get images related to shell items.
Vanara.Windows.Shell.ShellItemPropertyStore A property store for a Vanara.Windows.Shell.ShellItem.
Vanara.Windows.Shell.ShellItemPropertyUpdates A dictionary of properties that can be used to set or update property values on Shell items via the Vanara.Windows.Shell.ShellFileOperations.QueueApplyPropertiesOperation(Vanara.Windows.Shell.ShellItem,Vanara.Windows.Shell.ShellItemPropertyUpdates) method. This class wraps the Vanara.Windows.Shell.ShellItemPropertyUpdates.IPropertyChangeArray COM interface.
Vanara.Windows.Shell.ShellLibrary Shell library encapsulation.
Vanara.Windows.Shell.ShellLibrary.ShellLibraryFolders Folders of a Vanara.Windows.Shell.ShellLibrary.
Vanara.Windows.Shell.ShellLink Represents a Shell Shortcut (.lnk) file.
Vanara.Windows.Shell.ShellNavigationHistory The navigation log is a history of the locations visited by a shell view object.
Vanara.Windows.Shell.ShellRegistrar Contains static methods used to register and unregister shell items in the Windows Registry.
Vanara.Windows.Shell.ShellSearch Represents functionality of the Windows Search Service.
Vanara.Windows.Shell.ShellSearchViewSettings Settings that change the folder view of a search.
Vanara.Windows.Shell.StockIcon Represents a standard system icon.
Vanara.Windows.Shell.TaskbarButton Provides access to the functionality of the taskbar button.
Vanara.Windows.Shell.TaskbarButtonThumbnail
Vanara.Windows.Shell.TaskbarButtonThumbnails The list of thumbnails to be displayed on the taskbar button.
Vanara.Windows.Shell.TaskbarList Methods that control the Windows taskbar. It allows you to dynamically add, remove, and activate items on the taskbar. This wraps all of the ITaskbarListX interfaces.
Vanara.Windows.Shell.ThumbnailToolbar The toolbar associated with thumbnails shown when hovering over an application's taskbar button.
Vanara.Windows.Shell.ThumbnailToolbarButton A button in the toolbar associated with thumbnails displayed on a taskbar button.
Vanara.Windows.Shell.ThumbnailToolbarButtonCollection A collection of thumbnail toolbar buttons.
Vanara.Windows.Shell.WallpaperManager Provides methods for managing the desktop wallpaper.
Vanara.Windows.Shell.WallpaperManager.WallpaperMonitor Represents the wallpaper settings on a single monitor.
Vanara.Windows.Shell.WallpaperManager.WallpaperSlideshow Represents the settings for a wallpaper slideshow.