Vanara/PInvoke/Shell32/ShlDisp.cs

6813 lines
370 KiB
C#
Raw Normal View History

2018-03-26 15:18:42 -04:00
using System;
using System.Collections;
using System.Reflection;
using System.Runtime.CompilerServices;
2018-03-26 15:18:42 -04:00
using System.Runtime.InteropServices;
using System.Runtime.InteropServices.ComTypes;
using System.Security;
namespace Vanara.PInvoke
{
public static partial class Shell32
2018-03-26 15:18:42 -04:00
{
/// <summary>Specifies values used by IAutoComplete2::GetOptions and IAutoComplete2::SetOptions for options surrounding autocomplete.</summary>
[Flags]
public enum AUTOCOMPLETEOPTIONS
{
/// <summary>Do not autocomplete.</summary>
ACO_NONE = 0,
/// <summary>Enable the autosuggest drop-down list.</summary>
ACO_AUTOSUGGEST = 0x1,
/// <summary>Enable autoappend.</summary>
ACO_AUTOAPPEND = 0x2,
/// <summary>Add a search item to the list of completed strings. When the user selects this item, it launches a search engine.</summary>
ACO_SEARCH = 0x4,
/// <summary>Do not match common prefixes, such as "www." or "http://".</summary>
ACO_FILTERPREFIXES = 0x8,
/// <summary>Use the TAB key to select an item from the drop-down list.</summary>
ACO_USETAB = 0x10,
/// <summary>Use the UP ARROW and DOWN ARROW keys to display the autosuggest drop-down list.</summary>
ACO_UPDOWNKEYDROPSLIST = 0x20,
/// <summary>
/// Normal windows display text left-to-right (LTR). Windows can be mirrored to display languages such as Hebrew or Arabic that
/// read right-to-left (RTL). Typically, control text is displayed in the same direction as the text in its parent window. If
/// ACO_RTLREADING is set, the text reads in the opposite direction from the text in the parent window.
/// </summary>
ACO_RTLREADING = 0x40,
/// <summary>
/// Windows Vista and later. If set, the autocompleted suggestion is treated as a phrase for search purposes. The suggestion,
/// Microsoft Office, would be treated as "Microsoft Office" (where both Microsoft AND Office must appear in the search results).
/// </summary>
ACO_WORD_FILTER = 0x80,
/// <summary>
/// Windows Vista and later. Disable prefix filtering when displaying the autosuggest dropdown. Always display all suggestions.
/// </summary>
ACO_NOPREFIXFILTERING = 0x100
}
/// <summary>The offline status of the folder.</summary>
[PInvokeData("shldisp.h")]
[Guid("35F1A0D0-3E9A-11D2-8499-005345000000")]
public enum OfflineFolderStatus
{
/// <summary>Server is online with unsynchronized changes.</summary>
OFS_DIRTYCACHE = 3,
/// <summary>Offline caching is not enabled for this folder.</summary>
OFS_INACTIVE = -1,
/// <summary>Server is offline.</summary>
OFS_OFFLINE = 1,
/// <summary>Server is online.</summary>
OFS_ONLINE = 0,
/// <summary>Server is offline but can be reached.</summary>
OFS_SERVERBACK = 2
}
/// <summary>Specifies the view options returned by the ViewOptions property.</summary>
// https://docs.microsoft.com/en-us/windows/win32/api/shldisp/ne-shldisp-shellfolderviewoptions typedef enum ShellFolderViewOptions {
// SFVVO_SHOWALLOBJECTS, SFVVO_SHOWEXTENSIONS, SFVVO_SHOWCOMPCOLOR, SFVVO_SHOWSYSFILES, SFVVO_WIN95CLASSIC,
// SFVVO_DOUBLECLICKINWEBVIEW, SFVVO_DESKTOPHTML } ;
[PInvokeData("shldisp.h", MSDNShortId = "7028ff38-7596-4126-aa98-c0be519243c9")]
[Guid("742A99A0-C77E-11D0-A32C-00A0C91EEDBA")]
[Flags]
public enum ShellFolderViewOptions
{
/// <summary>The Active Desktop View as Web Page option is enabled.</summary>
SFVVO_DESKTOPHTML = 0x200,
/// <summary>The Double-Click to Open an Item option is enabled.</summary>
SFVVO_DOUBLECLICKINWEBVIEW = 0x80,
/// <summary>The Show All Files option is enabled.</summary>
SFVVO_SHOWALLOBJECTS = 1,
/// <summary>The Display Compressed Files and Folders with Alternate Color option is enabled.</summary>
SFVVO_SHOWCOMPCOLOR = 8,
/// <summary>The Hide extensions for known file types option is disabled.</summary>
SFVVO_SHOWEXTENSIONS = 2,
/// <summary>The Do Not Show Hidden Files option is enabled.</summary>
SFVVO_SHOWSYSFILES = 0x20,
/// <summary>The Classic Style option is enabled.</summary>
SFVVO_WIN95CLASSIC = 0x40
}
/// <summary>
/// Specifies unique, system-independent values that identify special folders. These folders are frequently used by applications but
/// which may not have the same name or location on any given system. For example, the system folder can be "C:\Windows" on one
/// system and "C:\Winnt" on another.
/// </summary>
/// <remarks>
/// <para>
/// The values in this enumeration are equivalent to their corresponding CSIDL or KNOWNFOLDERID values, used in C++ applications.
/// They supersede the use of environment variables for this purpose. Note that not all <c>CSIDL</c> or <c>KNOWNFOLDERID</c> values
/// have an equivalent value in <c>ShellSpecialFolderConstants</c>.
/// </para>
/// <para>
/// <c>Note</c> Where a constant identifies a file system folder, a commonly used path on Windows Vista systems is given as an
/// example. However, there is no guarantee that this path will be used on any particular system, including Windows Vista systems.
/// </para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/shldisp/ne-shldisp-shellspecialfolderconstants typedef enum
// ShellSpecialFolderConstants { ssfDESKTOP, ssfPROGRAMS, ssfCONTROLS, ssfPRINTERS, ssfPERSONAL, ssfFAVORITES, ssfSTARTUP, ssfRECENT,
// ssfSENDTO, ssfBITBUCKET, ssfSTARTMENU, ssfDESKTOPDIRECTORY, ssfDRIVES, ssfNETWORK, ssfNETHOOD, ssfFONTS, ssfTEMPLATES,
// ssfCOMMONSTARTMENU, ssfCOMMONPROGRAMS, ssfCOMMONSTARTUP, ssfCOMMONDESKTOPDIR, ssfAPPDATA, ssfPRINTHOOD, ssfLOCALAPPDATA,
// ssfALTSTARTUP, ssfCOMMONALTSTARTUP, ssfCOMMONFAVORITES, ssfINTERNETCACHE, ssfCOOKIES, ssfHISTORY, ssfCOMMONAPPDATA, ssfWINDOWS,
// ssfSYSTEM, ssfPROGRAMFILES, ssfMYPICTURES, ssfPROFILE, ssfSYSTEMx86, ssfPROGRAMFILESx86 } ;
[PInvokeData("shldisp.h", MSDNShortId = "35338102-f3a9-4bcf-ad62-d395462e6d2c")]
[Guid("CA31EA20-48D0-11CF-8350-444553540000")]
public enum ShellSpecialFolderConstants
{
/// <summary>0x00 (0). Windows desktop—the virtual folder that is the root of the namespace.</summary>
ssfDESKTOP = 0,
/// <summary>
/// 0x02 (2). File system directory that contains the user's program groups (which are also file system directories). A typical
/// path is C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs.
/// </summary>
ssfPROGRAMS = 2,
/// <summary>0x03 (3). Virtual folder that contains icons for the Control Panel applications.</summary>
ssfCONTROLS,
/// <summary>0x04 (4). Virtual folder that contains installed printers.</summary>
ssfPRINTERS,
/// <summary>
/// 0x05 (5). File system directory that serves as a common repository for a user's documents. A typical path is C:\Users\username\Documents.
/// </summary>
ssfPERSONAL,
/// <summary>
/// 0x06 (6). File system directory that serves as a common repository for the user's favorite URLs. A typical path is
/// C:\Documents and Settings\username\Favorites.
/// </summary>
ssfFAVORITES,
/// <summary>
/// 0x07 (7). File system directory that corresponds to the user's Startup program group. The system starts these programs
/// whenever any user first logs into their profile after a reboot. A typical path is
/// C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\StartUp.
/// </summary>
ssfSTARTUP,
/// <summary>0x08 (8). File system directory that contains the user's most recently used documents. A typical path is C:\Users\username\AppData\Roaming\Microsoft\Windows\Recent.</summary>
ssfRECENT,
/// <summary>0x09 (9). File system directory that contains Send To menu items. A typical path is C:\Users\username\AppData\Roaming\Microsoft\Windows\SendTo.</summary>
ssfSENDTO,
/// <summary>0x0a (10). Virtual folder that contains the objects in the user's Recycle Bin.</summary>
ssfBITBUCKET,
/// <summary>
/// 0x0b (11). File system directory that contains Start menu items. A typical path is
/// C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu.
/// </summary>
ssfSTARTMENU,
/// <summary>
/// 0x10 (16). File system directory used to physically store the file objects that are displayed on the desktop. It is not to be
/// confused with the desktop folder itself, which is a virtual folder. A typical path is C:\Documents and Settings\username\Desktop.
/// </summary>
ssfDESKTOPDIRECTORY = 16,
/// <summary>
/// 0x11 (17). My Computer—the virtual folder that contains everything on the local computer: storage devices, printers, and
/// Control Panel. This folder can also contain mapped network drives.
/// </summary>
ssfDRIVES,
/// <summary>0x12 (18). Network Neighborhood—the virtual folder that represents the root of the network namespace hierarchy.</summary>
ssfNETWORK,
/// <summary>
/// 0x13 (19). A file system folder that contains any link objects in the My Network Places virtual folder. It is not the same as
/// ssfNETWORK, which represents the network namespace root. A typical path is
/// C:\Users\username\AppData\Roaming\Microsoft\Windows\Network Shortcuts.
/// </summary>
ssfNETHOOD,
/// <summary>0x14 (20). Virtual folder that contains installed fonts. A typical path is C:\Windows\Fonts.</summary>
ssfFONTS,
/// <summary>0x15 (21). File system directory that serves as a common repository for document templates.</summary>
ssfTEMPLATES,
/// <summary>
/// 0x16 (22). File system directory that contains the programs and folders that appear on the Start menu for all users. A
/// typical path is C:\Documents and Settings\All Users\Start Menu. Valid only for Windows NT systems.
/// </summary>
ssfCOMMONSTARTMENU,
/// <summary>
/// 0x17 (23). File system directory that contains the directories for the common program groups that appear on the Start menu
/// for all users. A typical path is C:\Documents and Settings\All Users\Start Menu\Programs. Valid only for Windows NT systems.
/// </summary>
ssfCOMMONPROGRAMS,
/// <summary>
/// 0x18 (24). File system directory that contains the programs that appear in the Startup folder for all users. A typical path
/// is C:\Documents and Settings\All Users\Microsoft\Windows\Start Menu\Programs\StartUp. Valid only for Windows NT systems.
/// </summary>
ssfCOMMONSTARTUP,
/// <summary>
/// 0x19 (25). File system directory that contains files and folders that appear on the desktop for all users. A typical path is
/// C:\Documents and Settings\All Users\Desktop. Valid only for Windows NT systems.
/// </summary>
ssfCOMMONDESKTOPDIR,
/// <summary>
/// 0x1a (26). Version 4.71. File system directory that serves as a common repository for application-specific data. A typical
/// path is C:\Documents and Settings\username\Application Data.
/// </summary>
ssfAPPDATA,
/// <summary>
/// 0x1b (27). File system directory that contains any link objects in the Printers virtual folder. A typical path is
/// C:\Users\username\AppData\Roaming\Microsoft\Windows\Printer Shortcuts.
/// </summary>
ssfPRINTHOOD,
/// <summary>
/// 0x1c (28). Version 5.0. File system directory that serves as a data repository for local (non-roaming) applications. A
/// typical path is C:\Users\username\AppData\Local.
/// </summary>
ssfLOCALAPPDATA,
/// <summary>0x1d (29). File system directory that corresponds to the user's non-localized Startup program group.</summary>
ssfALTSTARTUP,
/// <summary>
/// 0x1e (30). File system directory that corresponds to the non-localized Startup program group for all users. Valid only for
/// Windows NT systems.
/// </summary>
ssfCOMMONALTSTARTUP,
/// <summary>
/// 0x1f (31). File system directory that serves as a common repository for the favorite URLs shared by all users. Valid only for
/// Windows NT systems.
/// </summary>
ssfCOMMONFAVORITES,
/// <summary>
/// 0x20 (32). File system directory that serves as a common repository for temporary Internet files. A typical path is
/// C:\Users\username\AppData\Local\Microsoft\Windows\Temporary Internet Files.
/// </summary>
ssfINTERNETCACHE,
/// <summary>
/// 0x21 (33). File system directory that serves as a common repository for Internet cookies. A typical path is C:\Documents and
/// Settings\username\Application Data\Microsoft\Windows\Cookies.
/// </summary>
ssfCOOKIES,
/// <summary>0x22 (34). File system directory that serves as a common repository for Internet history items.</summary>
ssfHISTORY,
/// <summary>
/// 0x23 (35). Version 5.0. Application data for all users. A typical path is C:\Documents and Settings\All Users\Application Data.
/// </summary>
ssfCOMMONAPPDATA,
/// <summary>
/// 0x24 (36). Version 5.0. Windows directory. This corresponds to the %windir% or %SystemRoot% environment variables. A typical
/// path is C:\Windows.
/// </summary>
ssfWINDOWS,
/// <summary>0x25 (37). Version 5.0. The System folder. A typical path is C:\Windows\System32.</summary>
ssfSYSTEM,
/// <summary>0x26 (38). Version 5.0. Program Files folder. A typical path is C:\Program Files.</summary>
ssfPROGRAMFILES,
/// <summary>0x27 (39). My Pictures folder. A typical path is C:\Users\username\Pictures.</summary>
ssfMYPICTURES,
/// <summary>0x28 (40). Version 5.0. User's profile folder.</summary>
ssfPROFILE,
/// <summary>
/// 0x29 (41). Version 5.0. System folder. A typical path is C:\Windows\System32, or C:\Windows\Syswow32 on a 64-bit computer.
/// </summary>
ssfSYSTEMx86,
/// <summary>
/// 0x30 (48). Version 6.0. Program Files folder. A typical path is C:\Program Files, or C:\Program Files (X86) on a 64-bit computer.
/// </summary>
ssfPROGRAMFILESx86 = 48,
}
/// <summary>Undocumented.</summary>
[ComImport, Guid("4A3DF050-23BD-11D2-939F-00A0C91EEDBA")]
public interface DFConstraint
{
/// <summary>Undocumented.</summary>
[DispId(0x60020000)]
string Name { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020000)] get; }
/// <summary>Undocumented.</summary>
[DispId(0x60020001)]
object Value { [return: MarshalAs(UnmanagedType.Struct)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020001)] get; }
}
/// <summary>Undocumented.</summary>
[ComImport, InterfaceType(ComInterfaceType.InterfaceIsIDispatch), Guid("62112AA2-EBE4-11CF-A5FB-0020AFE7292D"), CoClass(typeof(ShellFolderView))]
public interface DShellFolderViewEvents
{
/// <summary>Undocumented.</summary>
[PreserveSig, MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(200)]
void SelectionChanged();
/// <summary>Undocumented.</summary>
[PreserveSig, MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0xc9)]
void EnumDone();
/// <summary>Undocumented.</summary>
[PreserveSig, MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0xca)]
bool VerbInvoked();
/// <summary>Undocumented.</summary>
[PreserveSig, MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0xcb)]
bool DefaultVerbInvoked();
/// <summary>Undocumented.</summary>
[PreserveSig, MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0xcc)]
bool BeginDrag();
}
/// <summary>
/// Represents a Shell folder. This object contains properties and methods that allow you to retrieve information about the folder.
/// </summary>
[PInvokeData("Shldisp.h")]
[ComImport, Guid("BBCBDE60-C3FF-11CE-8350-444553540000"), DefaultMember("Title")]
public interface Folder
{
/// <summary>Contains the title of the folder.</summary>
/// <value>Returns a <see cref="string"/> value.</value>
[DispId(0)]
string Title { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0)] get; }
/// <summary>Contains the folder's Application object.</summary>
/// <value>An object reference to the Application object.</value>
/// <remarks>
/// The Application property returns the automation object supported by the application that contains the WebBrowser control, if
/// that object is accessible. Otherwise, this property returns the WebBrowser control's automation object.
/// <para>
/// Use this property with the Set and CreateObject commands or with the GetObject command to create and manipulate an instance
/// of the Internet Explorer application.
/// </para>
/// <note type="note">Not all methods are implemented for all folders. For example, the ParseName method is not implemented for
/// the Control Panel folder (CSIDL_CONTROLS). If you attempt to call an unimplemented method, a 0x800A01BD (decimal 445) error
/// is raised.</note>
/// </remarks>
[DispId(0x60020001)]
object Application { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020001)] get; }
2018-03-26 15:18:42 -04:00
/// <summary>This property is not implemented.</summary>
[DispId(0x60020002)]
object Parent { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020002)] get; }
2018-03-26 15:18:42 -04:00
/// <summary>Contains the parent Folder object.</summary>
/// <value>An object reference to the ParentFolder object.</value>
/// <remarks>
/// <note type="note">Not all methods are implemented for all folders. For example, the ParseName method is not implemented for
/// the Control Panel folder (CSIDL_CONTROLS). If you attempt to call an unimplemented method, a 0x800A01BD (decimal 445) error
/// is raised.</note>
/// </remarks>
[DispId(0x60020003)]
Folder ParentFolder { [return: MarshalAs(UnmanagedType.Interface)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020003)] get; }
2018-03-26 15:18:42 -04:00
/// <summary>Retrieves a FolderItems object that represents the collection of items in the folder.</summary>
/// <returns>An object reference to the FolderItems object.</returns>
/// <remarks>
/// <note type="note">Not all methods are implemented for all folders. For example, the ParseName method is not implemented for
/// the Control Panel folder (CSIDL_CONTROLS). If you attempt to call an unimplemented method, a 0x800A01BD (decimal 445) error
/// is raised.</note>
/// </remarks>
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020004)]
FolderItems Items();
2019-01-14 23:17:12 -05:00
/// <summary>Creates and returns a FolderItem object that represents a specified item.</summary>
/// <param name="bName">A string that specifies the name of the item.</param>
/// <returns>An object reference to the FolderItem object.</returns>
/// <remarks>ParseName should not be used for virtual folders such as My Documents.</remarks>
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020005)]
FolderItem ParseName([In, MarshalAs(UnmanagedType.BStr)] string bName);
2019-01-14 23:17:12 -05:00
/// <summary>Creates a new folder.</summary>
/// <param name="bName">A string that specifies the name of the new folder.</param>
/// <param name="vOptions">This value is not currently used.</param>
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020006)]
void NewFolder([In, MarshalAs(UnmanagedType.BStr)] string bName, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vOptions);
2019-01-14 23:17:12 -05:00
/// <summary>Moves an item or items to this folder.</summary>
/// <param name="vItem">
/// The item or items to move. This can be a string that represents a file name, a FolderItem object, or a FolderItems object.
/// </param>
/// <param name="vOptions">
/// Options for the move operation. This value can be zero or a combination of the following values. These values are based upon
/// flags defined for use with the fFlags member of the C++ SHFILEOPSTRUCT structure. These flags are not defined as such for
/// Visual Basic, VBScript, or JScript, so you must define them yourself or use their numeric equivalents.
/// </param>
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020007)]
void MoveHere([In, MarshalAs(UnmanagedType.Struct)] object vItem, [In, Optional, MarshalAs(UnmanagedType.Struct)] FILEOP_FLAGS vOptions);
2019-01-14 23:17:12 -05:00
/// <summary>Copies an item or items to a folder.</summary>
/// <param name="vItem">
/// The item or items to copy. This can be a string that represents a file name, a FolderItem object, or a FolderItems object.
/// </param>
/// <param name="vOptions">
/// Options for the copy operation. This value can be zero or a combination of the following values. These values are based upon
/// flags defined for use with the fFlags member of the C++ SHFILEOPSTRUCT structure. Each Shell namespace must provide its own
/// implementation of these flags, and each namespace can choose to ignore some or even all of these flags. These flags are not
/// defined by name for Visual Basic, VBScript, or JScript, so you must define them yourself or use their numeric equivalents.
/// </param>
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020008)]
void CopyHere([In, MarshalAs(UnmanagedType.Struct)] object vItem, [In, Optional, MarshalAs(UnmanagedType.Struct)] FILEOP_FLAGS vOptions);
2019-01-14 23:17:12 -05:00
/// <summary>Retrieves details about an item in a folder. For example, its size, type, or the time of its last modification.</summary>
/// <param name="vItem">The item for which to retrieve the information. This must be a FolderItem object.</param>
/// <param name="iColumn">
/// An Integer value that specifies the information to be retrieved. The information available for an item depends on the folder
/// in which it is displayed. This value corresponds to the zero-based column number that is displayed in a Shell view.
/// </param>
/// <returns>String containing the retrieved detail.</returns>
[return: MarshalAs(UnmanagedType.BStr)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020009)]
string GetDetailsOf([In, MarshalAs(UnmanagedType.Struct)] object vItem, [In] int iColumn);
}
2019-01-14 23:17:12 -05:00
/// <summary>Extends the Folder object to support offline folders.</summary>
[PInvokeData("Shldisp.h")]
[ComImport, Guid("F0D2D8EF-3890-11D2-BF8B-00C04FB93661"), DefaultMember("Title")]
public interface Folder2 : Folder
{
/// <summary>Contains the title of the folder.</summary>
/// <value>Returns a <see cref="string"/> value.</value>
[DispId(0)]
new string Title { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0)] get; }
2019-01-14 23:17:12 -05:00
/// <summary>Contains the folder's Application object.</summary>
/// <value>An object reference to the Application object.</value>
/// <remarks>
/// The Application property returns the automation object supported by the application that contains the WebBrowser control, if
/// that object is accessible. Otherwise, this property returns the WebBrowser control's automation object.
/// <para>
/// Use this property with the Set and CreateObject commands or with the GetObject command to create and manipulate an instance
/// of the Internet Explorer application.
/// </para>
/// <note type="note">Not all methods are implemented for all folders. For example, the ParseName method is not implemented for
/// the Control Panel folder (CSIDL_CONTROLS). If you attempt to call an unimplemented method, a 0x800A01BD (decimal 445) error
/// is raised.</note>
/// </remarks>
[DispId(0x60020001)]
new object Application { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020001)] get; }
2019-01-14 23:17:12 -05:00
/// <summary>This property is not implemented.</summary>
[DispId(0x60020002)]
new object Parent { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020002)] get; }
/// <summary>Contains the parent Folder object.</summary>
/// <value>An object reference to the ParentFolder object.</value>
/// <remarks>
/// <note type="note">Not all methods are implemented for all folders. For example, the ParseName method is not implemented for
/// the Control Panel folder (CSIDL_CONTROLS). If you attempt to call an unimplemented method, a 0x800A01BD (decimal 445) error
/// is raised.</note>
/// </remarks>
[DispId(0x60020003)]
new Folder ParentFolder { [return: MarshalAs(UnmanagedType.Interface)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020003)] get; }
/// <summary>Retrieves a FolderItems object that represents the collection of items in the folder.</summary>
/// <returns>An object reference to the FolderItems object.</returns>
/// <remarks>
/// <note type="note">Not all methods are implemented for all folders. For example, the ParseName method is not implemented for
/// the Control Panel folder (CSIDL_CONTROLS). If you attempt to call an unimplemented method, a 0x800A01BD (decimal 445) error
/// is raised.</note>
/// </remarks>
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020004)]
new FolderItems Items();
/// <summary>Creates and returns a FolderItem object that represents a specified item.</summary>
/// <param name="bName">A string that specifies the name of the item.</param>
/// <returns>An object reference to the FolderItem object.</returns>
/// <remarks>ParseName should not be used for virtual folders such as My Documents.</remarks>
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020005)]
new FolderItem ParseName([In, MarshalAs(UnmanagedType.BStr)] string bName);
/// <summary>Creates a new folder.</summary>
/// <param name="bName">A string that specifies the name of the new folder.</param>
/// <param name="vOptions">This value is not currently used.</param>
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020006)]
new void NewFolder([In, MarshalAs(UnmanagedType.BStr)] string bName, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vOptions);
/// <summary>Moves an item or items to this folder.</summary>
/// <param name="vItem">
/// The item or items to move. This can be a string that represents a file name, a FolderItem object, or a FolderItems object.
/// </param>
/// <param name="vOptions">
/// Options for the move operation. This value can be zero or a combination of the following values. These values are based upon
/// flags defined for use with the fFlags member of the C++ SHFILEOPSTRUCT structure. These flags are not defined as such for
/// Visual Basic, VBScript, or JScript, so you must define them yourself or use their numeric equivalents.
/// </param>
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020007)]
new void MoveHere([In, MarshalAs(UnmanagedType.Struct)] object vItem, [In, Optional, MarshalAs(UnmanagedType.Struct)] FILEOP_FLAGS vOptions);
/// <summary>Copies an item or items to a folder.</summary>
/// <param name="vItem">
/// The item or items to copy. This can be a string that represents a file name, a FolderItem object, or a FolderItems object.
/// </param>
/// <param name="vOptions">
/// Options for the copy operation. This value can be zero or a combination of the following values. These values are based upon
/// flags defined for use with the fFlags member of the C++ SHFILEOPSTRUCT structure. Each Shell namespace must provide its own
/// implementation of these flags, and each namespace can choose to ignore some or even all of these flags. These flags are not
/// defined by name for Visual Basic, VBScript, or JScript, so you must define them yourself or use their numeric equivalents.
/// </param>
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020008)]
new void CopyHere([In, MarshalAs(UnmanagedType.Struct)] object vItem, [In, Optional, MarshalAs(UnmanagedType.Struct)] FILEOP_FLAGS vOptions);
/// <summary>Retrieves details about an item in a folder. For example, its size, type, or the time of its last modification.</summary>
/// <param name="vItem">The item for which to retrieve the information. This must be a FolderItem object.</param>
/// <param name="iColumn">
/// An Integer value that specifies the information to be retrieved. The information available for an item depends on the folder
/// in which it is displayed. This value corresponds to the zero-based column number that is displayed in a Shell view.
/// </param>
/// <returns>String containing the retrieved detail.</returns>
[return: MarshalAs(UnmanagedType.BStr)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020009)]
new string GetDetailsOf([In, MarshalAs(UnmanagedType.Struct)] object vItem, [In] int iColumn);
/// <summary>Contains the folder's FolderItem object.</summary>
/// <value>The object that evaluates to the folder's FolderItem object.</value>
[DispId(0x60030000)]
FolderItem Self { [return: MarshalAs(UnmanagedType.Interface)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030000)] get; }
/// <summary>Contains the offline status of the folder.</summary>
/// <value>Returns a <see cref="OfflineFolderStatus"/> value.</value>
[DispId(0x60030001)]
OfflineFolderStatus OfflineStatus { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030001)] get; }
/// <summary>Synchronizes all offline files in the folder.</summary>
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030002)]
void Synchronize();
/// <summary>This property is not supported.</summary>
/// <value><see langword="true"/> if [have to show web view barricade]; otherwise, <see langword="false"/>.</value>
[DispId(1)]
bool HaveToShowWebViewBarricade { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(1)] get; }
/// <summary>Called in response to the web view barricade being dismissed by the user.</summary>
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030004)]
void DismissedWebViewBarricade();
}
/// <summary>Extends the Folder object to support offline folders.</summary>
[PInvokeData("Shldisp.h")]
[ComImport, DefaultMember("Title"), Guid("A7AE5F64-C4D7-4D7F-9307-4D24EE54B841")]
public interface Folder3 : Folder2
{
/// <summary>Contains the title of the folder.</summary>
/// <value>Returns a <see cref="string"/> value.</value>
[DispId(0)]
new string Title { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0)] get; }
/// <summary>Contains the folder's Application object.</summary>
/// <value>An object reference to the Application object.</value>
/// <remarks>
/// The Application property returns the automation object supported by the application that contains the WebBrowser control, if
/// that object is accessible. Otherwise, this property returns the WebBrowser control's automation object.
/// <para>
/// Use this property with the Set and CreateObject commands or with the GetObject command to create and manipulate an instance
/// of the Internet Explorer application.
/// </para>
/// <note type="note">Not all methods are implemented for all folders. For example, the ParseName method is not implemented for
/// the Control Panel folder (CSIDL_CONTROLS). If you attempt to call an unimplemented method, a 0x800A01BD (decimal 445) error
/// is raised.</note>
/// </remarks>
[DispId(0x60020001)]
new object Application { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020001)] get; }
/// <summary>This property is not implemented.</summary>
[DispId(0x60020002)]
new object Parent { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020002)] get; }
/// <summary>Contains the parent Folder object.</summary>
/// <value>An object reference to the ParentFolder object.</value>
/// <remarks>
/// <note type="note">Not all methods are implemented for all folders. For example, the ParseName method is not implemented for
/// the Control Panel folder (CSIDL_CONTROLS). If you attempt to call an unimplemented method, a 0x800A01BD (decimal 445) error
/// is raised.</note>
/// </remarks>
[DispId(0x60020003)]
new Folder ParentFolder { [return: MarshalAs(UnmanagedType.Interface)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020003)] get; }
/// <summary>Retrieves a FolderItems object that represents the collection of items in the folder.</summary>
/// <returns>An object reference to the FolderItems object.</returns>
/// <remarks>
/// <note type="note">Not all methods are implemented for all folders. For example, the ParseName method is not implemented for
/// the Control Panel folder (CSIDL_CONTROLS). If you attempt to call an unimplemented method, a 0x800A01BD (decimal 445) error
/// is raised.</note>
/// </remarks>
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020004)]
new FolderItems Items();
/// <summary>Creates and returns a FolderItem object that represents a specified item.</summary>
/// <param name="bName">A string that specifies the name of the item.</param>
/// <returns>An object reference to the FolderItem object.</returns>
/// <remarks>ParseName should not be used for virtual folders such as My Documents.</remarks>
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020005)]
new FolderItem ParseName([In, MarshalAs(UnmanagedType.BStr)] string bName);
/// <summary>Creates a new folder.</summary>
/// <param name="bName">A string that specifies the name of the new folder.</param>
/// <param name="vOptions">This value is not currently used.</param>
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020006)]
new void NewFolder([In, MarshalAs(UnmanagedType.BStr)] string bName, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vOptions);
/// <summary>Moves an item or items to this folder.</summary>
/// <param name="vItem">
/// The item or items to move. This can be a string that represents a file name, a FolderItem object, or a FolderItems object.
/// </param>
/// <param name="vOptions">
/// Options for the move operation. This value can be zero or a combination of the following values. These values are based upon
/// flags defined for use with the fFlags member of the C++ SHFILEOPSTRUCT structure. These flags are not defined as such for
/// Visual Basic, VBScript, or JScript, so you must define them yourself or use their numeric equivalents.
/// </param>
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020007)]
new void MoveHere([In, MarshalAs(UnmanagedType.Struct)] object vItem, [In, Optional, MarshalAs(UnmanagedType.Struct)] FILEOP_FLAGS vOptions);
/// <summary>Copies an item or items to a folder.</summary>
/// <param name="vItem">
/// The item or items to copy. This can be a string that represents a file name, a FolderItem object, or a FolderItems object.
/// </param>
/// <param name="vOptions">
/// Options for the copy operation. This value can be zero or a combination of the following values. These values are based upon
/// flags defined for use with the fFlags member of the C++ SHFILEOPSTRUCT structure. Each Shell namespace must provide its own
/// implementation of these flags, and each namespace can choose to ignore some or even all of these flags. These flags are not
/// defined by name for Visual Basic, VBScript, or JScript, so you must define them yourself or use their numeric equivalents.
/// </param>
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020008)]
new void CopyHere([In, MarshalAs(UnmanagedType.Struct)] object vItem, [In, Optional, MarshalAs(UnmanagedType.Struct)] FILEOP_FLAGS vOptions);
/// <summary>Retrieves details about an item in a folder. For example, its size, type, or the time of its last modification.</summary>
/// <param name="vItem">The item for which to retrieve the information. This must be a FolderItem object.</param>
/// <param name="iColumn">
/// An Integer value that specifies the information to be retrieved. The information available for an item depends on the folder
/// in which it is displayed. This value corresponds to the zero-based column number that is displayed in a Shell view.
/// </param>
/// <returns>String containing the retrieved detail.</returns>
[return: MarshalAs(UnmanagedType.BStr)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020009)]
new string GetDetailsOf([In, MarshalAs(UnmanagedType.Struct)] object vItem, [In] int iColumn);
/// <summary>Contains the folder's FolderItem object.</summary>
/// <value>The object that evaluates to the folder's FolderItem object.</value>
[DispId(0x60030000)]
new FolderItem Self { [return: MarshalAs(UnmanagedType.Interface)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030000)] get; }
/// <summary>Contains the offline status of the folder.</summary>
/// <value>Returns a <see cref="OfflineFolderStatus"/> value.</value>
[DispId(0x60030001)]
new OfflineFolderStatus OfflineStatus { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030001)] get; }
/// <summary>Synchronizes all offline files in the folder.</summary>
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030002)]
new void Synchronize();
/// <summary>This property is not supported.</summary>
/// <value><see langword="true"/> if [have to show web view barricade]; otherwise, <see langword="false"/>.</value>
[DispId(1)]
new bool HaveToShowWebViewBarricade { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(1)] get; }
/// <summary>Called in response to the web view barricade being dismissed by the user.</summary>
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030004)]
new void DismissedWebViewBarricade();
/// <summary>Gets or sets a value indicating whether to show web view barricade.</summary>
[DispId(2)]
bool ShowWebViewBarricade { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(2)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(2)] set; }
}
/// <summary>
/// Represents an item in a Shell folder. This object contains properties and methods that allow you to retrieve information about
/// the item.
/// </summary>
[PInvokeData("Shldisp.h")]
[ComImport, Guid("FAC32C80-CBE4-11CE-8350-444553540000"), DefaultMember("Name"), CoClass(typeof(ShellFolderItem))]
public interface FolderItem
{
/// <summary>Contains the Application object of the folder item.</summary>
/// <value>A variable of type IDispatch that receives the Application object.</value>
/// <remarks>
/// The Application property returns the automation object supported by the application that contains the WebBrowser control, if
/// that object is accessible. Otherwise, this property returns the WebBrowser control's automation object.
/// <para>
/// Use this property with the Set and CreateObject commands or with the GetObject command to create and manipulate an instance
/// of the Internet Explorer application.
/// </para>
/// </remarks>
[DispId(0x60020000)]
object Application { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020000)] get; }
/// <summary>Gets an object that represents the parent of the item.</summary>
/// <value>A variable of type IDispatch that receives the parent object.</value>
[DispId(0x60020001)]
object Parent { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020001)] get; }
/// <summary>Gets or sets the item's name.</summary>
/// <value>A variable of type BSTR that specifies or receives the item's name.</value>
[DispId(0)]
string Name { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0)] set; }
/// <summary>Contains the item's full path and name.</summary>
/// <value>A variable of type BSTR that receives the item's full path and name.</value>
[DispId(0x60020004)]
string Path { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020004)] get; }
/// <summary>Contains the item's ShellLinkObject object, if the item is a shortcut.</summary>
/// <value>A variable of type IDispatch that receives the ShellLinkObject object.</value>
[DispId(0x60020005)]
object GetLink { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020005)] get; }
/// <summary>Contains the item's Folder object, if the item is a folder.</summary>
/// <value>A variable of type IDispatch that receives the Folder object.</value>
[DispId(0x60020006)]
object GetFolder { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020006)] get; }
/// <summary>Indicates whether the item is a shortcut.</summary>
/// <value>A Boolean that receives <see langword="true"/> if the item is a shortcut or <see langword="false"/> if not.</value>
[DispId(0x60020007)]
bool IsLink { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020007)] get; }
/// <summary>Indicates if the item is a folder.</summary>
/// <value>A Boolean that receives <see langword="true"/> if the item is a folder or <see langword="false"/> if not.</value>
[DispId(0x60020008)]
bool IsFolder { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020008)] get; }
/// <summary>Indicates if the item is part of the file system.</summary>
/// <value>
/// A Boolean that receives <see langword="true"/> if the item is part of the file system or <see langword="false"/> if not.
/// </value>
[DispId(0x60020009)]
bool IsFileSystem { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020009)] get; }
/// <summary>Indicates if the item can be hosted inside a browser or Windows Explorer frame.</summary>
/// <value>A Boolean that receives <see langword="true"/> if the item can be browsed or <see langword="false"/> if not.</value>
[DispId(0x6002000a)]
bool IsBrowsable { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000a)] get; }
/// <summary>
/// For a file, sets or gets the date and time that it was last modified. For a folder, retrieves the date and time that a folder
/// was last modified, but cannot set it.
/// </summary>
/// <value>Date that specifies or receives the date and time that the item was last modified.</value>
[DispId(0x6002000b)]
DateTime ModifyDate { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000b)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000b)] set; }
/// <summary>Contains the item's size.</summary>
/// <value>An Integer that receives the item's size.</value>
[DispId(0x6002000d)]
int Size { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000d)] get; }
/// <summary>Contains a string representation of the item's type.</summary>
/// <value>A variable of type BSTR that receives the item's type.</value>
[DispId(0x6002000e)]
string Type { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000e)] get; }
/// <summary>
/// Retrieves the item's FolderItemVerbs object. This object is the collection of verbs that can be executed on the item.
/// </summary>
/// <returns>An object reference to the FolderItemVerbs object.</returns>
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000f)]
FolderItemVerbs Verbs();
/// <summary>Executes a verb on the item.</summary>
/// <param name="vVerb">
/// A string that specifies the verb to be executed. It must be one of the values returned by the item's FolderItemVerb.Name
/// property. If no verb is specified, the default verb will be invoked.
/// </param>
/// <remarks>
/// A verb is a string used to specify a particular action that an item supports. Invoking a verb is equivalent to selecting a
/// command from an item's shortcut menu. Typically, invoking a verb launches a related application. For example, invoking the
/// "open" verb on a .txt file opens the file with a text editor, usually Microsoft Notepad. See Launching Applications for
/// further discussion of verbs.
/// <para>
/// The FolderItemVerbs object represents the collection of verbs associated with the item.The default verb may vary for
/// different items, but it is typically "open".
/// </para>
/// </remarks>
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020010)]
void InvokeVerb([In, Optional, MarshalAs(UnmanagedType.Struct)] string vVerb);
}
/// <summary>Extends the FolderItems object. It supports one additional method.</summary>
[PInvokeData("Shldisp.h")]
[ComImport, DefaultMember("Name"), Guid("EDC817AA-92B8-11D1-B075-00C04FC33AA5"), CoClass(typeof(ShellFolderItem))]
public interface FolderItem2 : FolderItem
{
/// <summary>Contains the Application object of the folder item.</summary>
/// <value>A variable of type IDispatch that receives the Application object.</value>
/// <remarks>
/// The Application property returns the automation object supported by the application that contains the WebBrowser control, if
/// that object is accessible. Otherwise, this property returns the WebBrowser control's automation object.
/// <para>
/// Use this property with the Set and CreateObject commands or with the GetObject command to create and manipulate an instance
/// of the Internet Explorer application.
/// </para>
/// </remarks>
[DispId(0x60020000)]
new object Application { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020000)] get; }
/// <summary>Gets an object that represents the parent of the item.</summary>
/// <value>A variable of type IDispatch that receives the parent object.</value>
[DispId(0x60020001)]
new object Parent { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020001)] get; }
/// <summary>Gets or sets the item's name.</summary>
/// <value>A variable of type BSTR that specifies or receives the item's name.</value>
[DispId(0)]
new string Name { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0)] set; }
/// <summary>Contains the item's full path and name.</summary>
/// <value>A variable of type BSTR that receives the item's full path and name.</value>
[DispId(0x60020004)]
new string Path { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020004)] get; }
/// <summary>Contains the item's ShellLinkObject object, if the item is a shortcut.</summary>
/// <value>A variable of type IDispatch that receives the ShellLinkObject object.</value>
[DispId(0x60020005)]
new object GetLink { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020005)] get; }
/// <summary>Contains the item's Folder object, if the item is a folder.</summary>
/// <value>A variable of type IDispatch that receives the Folder object.</value>
[DispId(0x60020006)]
new object GetFolder { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020006)] get; }
/// <summary>Indicates whether the item is a shortcut.</summary>
/// <value>A Boolean that receives <see langword="true"/> if the item is a shortcut or <see langword="false"/> if not.</value>
[DispId(0x60020007)]
new bool IsLink { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020007)] get; }
/// <summary>Indicates if the item is a folder.</summary>
/// <value>A Boolean that receives <see langword="true"/> if the item is a folder or <see langword="false"/> if not.</value>
[DispId(0x60020008)]
new bool IsFolder { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020008)] get; }
/// <summary>Indicates if the item is part of the file system.</summary>
/// <value>
/// A Boolean that receives <see langword="true"/> if the item is part of the file system or <see langword="false"/> if not.
/// </value>
[DispId(0x60020009)]
new bool IsFileSystem { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020009)] get; }
/// <summary>Indicates if the item can be hosted inside a browser or Windows Explorer frame.</summary>
/// <value>A Boolean that receives <see langword="true"/> if the item can be browsed or <see langword="false"/> if not.</value>
[DispId(0x6002000a)]
new bool IsBrowsable { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000a)] get; }
/// <summary>
/// For a file, sets or gets the date and time that it was last modified. For a folder, retrieves the date and time that a folder
/// was last modified, but cannot set it.
/// </summary>
/// <value>Date that specifies or receives the date and time that the item was last modified.</value>
[DispId(0x6002000b)]
new DateTime ModifyDate { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000b)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000b)] set; }
/// <summary>Contains the item's size.</summary>
/// <value>An Integer that receives the item's size.</value>
[DispId(0x6002000d)]
new int Size { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000d)] get; }
/// <summary>Contains a string representation of the item's type.</summary>
/// <value>A variable of type BSTR that receives the item's type.</value>
[DispId(0x6002000e)]
new string Type { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000e)] get; }
/// <summary>
/// Retrieves the item's FolderItemVerbs object. This object is the collection of verbs that can be executed on the item.
/// </summary>
/// <returns>An object reference to the FolderItemVerbs object.</returns>
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000f)]
new FolderItemVerbs Verbs();
/// <summary>Executes a verb on the item.</summary>
/// <param name="vVerb">
/// A string that specifies the verb to be executed. It must be one of the values returned by the item's FolderItemVerb.Name
/// property. If no verb is specified, the default verb will be invoked.
/// </param>
/// <remarks>
/// A verb is a string used to specify a particular action that an item supports. Invoking a verb is equivalent to selecting a
/// command from an item's shortcut menu. Typically, invoking a verb launches a related application. For example, invoking the
/// "open" verb on a .txt file opens the file with a text editor, usually Microsoft Notepad. See Launching Applications for
/// further discussion of verbs.
/// <para>
/// The FolderItemVerbs object represents the collection of verbs associated with the item.The default verb may vary for
/// different items, but it is typically "open".
/// </para>
/// </remarks>
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020010)]
new void InvokeVerb([In, Optional, MarshalAs(UnmanagedType.Struct)] string vVerb);
/// <summary>
/// Executes a verb on a collection of FolderItem objects. This method is an extension of the InvokeVerb method, allowing
/// additional control of the operation through a set of flags.
/// </summary>
/// <param name="vVerb">
/// A Variant with the verb string that corresponds to the command to be executed. If no verb is specified, the default verb is executed.
/// </param>
/// <param name="vArgs">
/// A Variant that consists of a string with one or more arguments to the command specified by vVerb. The format of this string
/// depends on the particular verb.
/// </param>
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030000)]
void InvokeVerbEx([In, Optional, MarshalAs(UnmanagedType.Struct)] string vVerb, [In, Optional, MarshalAs(UnmanagedType.Struct)] string vArgs);
/// <summary>Access an extended property</summary>
/// <param name="bstrPropName">Name of the property.</param>
/// <returns>Property value.</returns>
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030001)]
object ExtendedProperty([In, MarshalAs(UnmanagedType.BStr)] string bstrPropName);
}
/// <summary>
/// Represents the collection of items in a Shell folder. This object contains properties and methods that allow you to retrieve
/// information about the collection.
/// </summary>
[PInvokeData("Shldisp.h")]
[ComImport, Guid("744129E0-CBE5-11CE-8350-444553540000")]
public interface FolderItems
{
/// <summary>Contains the number of items in the collection.</summary>
/// <value>An Integer that contains a value for the Count property.</value>
[DispId(0x60020000)]
int Count { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020000)] get; }
/// <summary>Contains the Application object of the folder items collection.</summary>
/// <value>An object reference to the Application object.</value>
[DispId(0x60020001)]
object Application { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020001)] get; }
/// <summary>This property is not implemented.</summary>
[DispId(0x60020002)]
object Parent { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020002)] get; }
/// <summary>Retrieves the FolderItem object for a specified item in the collection.</summary>
/// <param name="index">The zero-based index of the item to retrieve. This value must be less than the value of the Count property.</param>
/// <returns>An object reference to the FolderItem object.</returns>
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020003)]
FolderItem Item([In, Optional, MarshalAs(UnmanagedType.Struct)] int index);
/// <summary>Creates and returns a new FolderItems object that is a copy of this FolderItemsss object.</summary>
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(-4)]
object _NewEnum();
}
/// <summary>Extends the FolderItems object. It supports one additional method.</summary>
/// <seealso cref="FolderItems"/>
[PInvokeData("Shldisp.h")]
[ComImport, Guid("C94F0AD0-F363-11D2-A327-00C04F8EEC7F")]
public interface FolderItems2 : FolderItems
{
/// <summary>Contains the number of items in the collection.</summary>
/// <value>An Integer that contains a value for the Count property.</value>
[DispId(0x60020000)]
new int Count { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020000)] get; }
/// <summary>Contains the Application object of the folder items collection.</summary>
/// <value>An object reference to the Application object.</value>
[DispId(0x60020001)]
new object Application { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020001)] get; }
/// <summary>This property is not implemented.</summary>
[DispId(0x60020002)]
new object Parent { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020002)] get; }
/// <summary>Retrieves the FolderItem object for a specified item in the collection.</summary>
/// <param name="index">The zero-based index of the item to retrieve. This value must be less than the value of the Count property.</param>
/// <returns>An object reference to the FolderItem object.</returns>
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020003)]
new FolderItem Item([In, Optional, MarshalAs(UnmanagedType.Struct)] int index);
/// <summary>Creates and returns a new FolderItems object that is a copy of this FolderItemsss object.</summary>
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(-4)]
new object _NewEnum();
/// <summary>
/// Executes a verb on a collection of FolderItem objects. This method is an extension of the InvokeVerb method, allowing
/// additional control of the operation through a set of flags.
/// </summary>
/// <param name="vVerb">
/// A Variant with the verb string that corresponds to the command to be executed. If no verb is specified, the default verb is executed.
/// </param>
/// <param name="vArgs">
/// A Variant that consists of a string with one or more arguments to the command specified by vVerb. The format of this string
/// depends on the particular verb.
/// </param>
/// <remarks>
/// A verb is a string used to specify a particular action associated with an item or collection of items. Typically, calling a
/// verb launches a related application. For example, calling the open verb on a .txt file normally opens the file with a text
/// editor, usually Microsoft Notepad. For further discussion of verbs, see Launching Applications.
/// </remarks>
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030000)]
void InvokeVerbEx([In, Optional, MarshalAs(UnmanagedType.Struct)] string vVerb, [In, Optional, MarshalAs(UnmanagedType.Struct)] string vArgs);
}
/// <summary>Extends the FolderItems2 object. This object supports an additional method and property.</summary>
/// <seealso cref="FolderItems2"/>
[PInvokeData("Shldisp.h")]
[ComImport, Guid("EAA7C309-BBEC-49D5-821D-64D966CB667F"), DefaultMember("Verbs")]
public interface FolderItems3 : FolderItems2
{
/// <summary>Contains the number of items in the collection.</summary>
/// <value>An Integer that contains a value for the Count property.</value>
[DispId(0x60020000)]
new int Count { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020000)] get; }
/// <summary>Contains the Application object of the folder items collection.</summary>
/// <value>An object reference to the Application object.</value>
[DispId(0x60020001)]
new object Application { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020001)] get; }
/// <summary>This property is not implemented.</summary>
[DispId(0x60020002)]
new object Parent { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020002)] get; }
/// <summary>Retrieves the FolderItem object for a specified item in the collection.</summary>
/// <param name="index">The zero-based index of the item to retrieve. This value must be less than the value of the Count property.</param>
/// <returns>An object reference to the FolderItem object.</returns>
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020003)]
new FolderItem Item([In, Optional, MarshalAs(UnmanagedType.Struct)] int index);
/// <summary>Creates and returns a new FolderItems object that is a copy of this FolderItemsss object.</summary>
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(-4)]
new object _NewEnum();
/// <summary>
/// Executes a verb on a collection of FolderItem objects. This method is an extension of the InvokeVerb method, allowing
/// additional control of the operation through a set of flags.
/// </summary>
/// <param name="vVerb">
/// A Variant with the verb string that corresponds to the command to be executed. If no verb is specified, the default verb is executed.
/// </param>
/// <param name="vArgs">
/// A Variant that consists of a string with one or more arguments to the command specified by vVerb. The format of this string
/// depends on the particular verb.
/// </param>
/// <remarks>
/// A verb is a string used to specify a particular action associated with an item or collection of items. Typically, calling a
/// verb launches a related application. For example, calling the open verb on a .txt file normally opens the file with a text
/// editor, usually Microsoft Notepad. For further discussion of verbs, see Launching Applications.
/// </remarks>
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030000)]
new void InvokeVerbEx([In, Optional, MarshalAs(UnmanagedType.Struct)] string vVerb, [In, Optional, MarshalAs(UnmanagedType.Struct)] string vArgs);
/// <summary>Sets a wildcard filter to apply to the items returned.</summary>
/// <param name="grfFlags">This parameter can be one of the flags listed in SHCONTF.</param>
/// <param name="bstrFileSpec">A filter string that specifies what should be listed in the FolderItems collection.</param>
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60040000)]
void Filter([In] SHCONTF grfFlags, [In, MarshalAs(UnmanagedType.BStr)] string bstrFileSpec);
/// <summary>Gets the list of verbs common to all the folder items.</summary>
/// <value>Address of a pointer to the collection of verbs. See FolderItemVerbs.</value>
[DispId(0)]
FolderItemVerbs Verbs { [return: MarshalAs(UnmanagedType.Interface)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0)] get; }
}
/// <summary>
/// Represents a single verb available to an item. This object contains properties and methods that allow you to retrieve information
/// about the verb.
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/folderitemverb
[PInvokeData("shldisp.h", MSDNShortId = "22f52e3f-875e-4dde-8875-3228639bc7f1")]
[ComImport, DefaultMember("Name"), Guid("08EC3E00-50B0-11CF-960C-0080C7F4EE85")]
public interface FolderItemVerb
{
/// <summary>This property is not implemented.</summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/folderitemverb-application
[DispId(0x60020000)]
object FolderItemVerb_Application { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020000)] get; }
/// <summary>This property is not implemented.</summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/folderitemverb-parent
[DispId(0x60020001)]
object Parent { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020001)] get; }
/// <summary>
/// <para>Contains the verb's name.</para>
/// <para>This property is read-only.</para>
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/folderitemverb-name
[DispId(0)]
string Name { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0)] get; }
/// <summary>Executes a verb on the <c>FolderItem</c> associated with the verb.</summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/folderitemverb-doit
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020003)]
void DoIt();
}
/// <summary>
/// Represents the collection of verbs for an item in a Shell folder. This object contains properties and methods that allow you to
/// retrieve information about the collection.
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/folderitemverbs
[PInvokeData("shldisp.h", MSDNShortId = "31badb4b-b89e-4294-9dd7-bda716e163b2")]
[ComImport, Guid("1F8352C0-50B0-11CF-960C-0080C7F4EE85")]
public interface FolderItemVerbs : IEnumerable
{
/// <summary>
/// <para>Contains the number of items in the collection.</para>
/// <para>This property is read-only.</para>
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/folderitemverbs-count
[DispId(0x60020000)]
int Count { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020000)] get; }
/// <summary>This property is not implemented.</summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/folderitemverbs-application
[DispId(0x60020001)]
object Application { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020001)] get; }
/// <summary>This property is not implemented.</summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/folderitemverbs-parent
[DispId(0x60020002)]
object Parent { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020002)] get; }
/// <summary>Retrieves the <c>FolderItemVerb</c> object for a specified item in the collection.</summary>
/// <param name="index">
/// <para>Type: <c>Variant</c></para>
/// <para>The zero-based index of the item to retrieve. This value must be less than the value of the <c>Count</c> property.</para>
/// </param>
/// <returns>
/// <para>Type: <c><c>IDispatch</c>**</c></para>
/// <para>Object that receives the <c>FolderItemVerb</c> object.</para>
/// </returns>
// https://docs.microsoft.com/en-us/windows/win32/shell/folderitemverbs-item
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020003)]
FolderItemVerb Item([In, Optional, MarshalAs(UnmanagedType.Struct)] int index);
/// <summary>Creates and returns a new FolderItemVerbs object that is a copy of this FolderItemVerbs object.</summary>
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(-4)]
object _NewEnum();
}
/// <summary>
/// Exposed by the autocomplete object (CLSID_AutoComplete). This interface allows applications to initialize, enable, and disable
/// the object.
/// </summary>
[PInvokeData("shldisp.h")]
[ComImport, SuppressUnmanagedCodeSecurity, Guid("00bb2762-6a77-11d0-a535-00c04fd7d062"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown), CoClass(typeof(CAutoComplete))]
public interface IAutoComplete
{
/// <summary>Initializes the autocomplete object.</summary>
/// <param name="hwndEdit">A handle to the window for the system edit control for which autocompletion will be enabled.</param>
/// <param name="punkAcl">
/// A pointer to the IUnknown interface of the string list object that generates candidates for the completed string. The object
/// must expose an IEnumString interface.
/// </param>
/// <param name="pwszRegKeyPath">
/// A pointer to an optional, null-terminated Unicode string that gives the registry path, including the value name, where the
/// format string is stored as a REG_SZ value. The autocomplete object first looks for the path under HKEY_CURRENT_USER. If it
/// fails, it tries HKEY_LOCAL_MACHINE. For a discussion of the format string, see the definition of pwszQuickComplete.
/// </param>
/// <param name="pwszQuickComplete">
/// A pointer to an optional null-terminated Unicode string that specifies the format to be used if the user enters text and
/// presses CTRL+ENTER. Set this parameter to NULL to disable quick completion. Otherwise, the autocomplete object treats
/// pwszQuickComplete as a StringCchPrintf format string and the text in the edit box as its associated argument, to produce a
/// new string. For example, set pwszQuickComplete to "http://www.%s.com/". When a user enters "MyURL" into the edit box and
/// presses CTRL+ENTER, the text in the edit box is updated to "http://www.MyURL.com/".
/// </param>
void Init(HWND hwndEdit, IEnumString punkAcl, [MarshalAs(UnmanagedType.LPWStr)] string pwszRegKeyPath, [MarshalAs(UnmanagedType.LPWStr)] string pwszQuickComplete);
/// <summary>Enables or disables autocompletion.</summary>
/// <param name="fEnable">A value that is set to TRUE to enable autocompletion, or FALSE to disable it.</param>
void Enable([MarshalAs(UnmanagedType.Bool)] bool fEnable);
}
/// <summary>
/// Extends IAutoComplete. This interface enables clients of the autocomplete object to retrieve and set a number of options that
/// control how autocompletion operates.
/// </summary>
/// <seealso cref="IAutoComplete"/>
[PInvokeData("shldisp.h")]
[ComImport, SuppressUnmanagedCodeSecurity, Guid("EAC04BC0-3791-11D2-BB95-0060977B464C"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown), CoClass(typeof(CAutoComplete))]
public interface IAutoComplete2 : IAutoComplete
{
/// <summary>Initializes the autocomplete object.</summary>
/// <param name="hwndEdit">A handle to the window for the system edit control for which autocompletion will be enabled.</param>
/// <param name="punkAcl">
/// A pointer to the IUnknown interface of the string list object that generates candidates for the completed string. The object
/// must expose an IEnumString interface.
/// </param>
/// <param name="pwszRegKeyPath">
/// A pointer to an optional, null-terminated Unicode string that gives the registry path, including the value name, where the
/// format string is stored as a REG_SZ value. The autocomplete object first looks for the path under HKEY_CURRENT_USER. If it
/// fails, it tries HKEY_LOCAL_MACHINE. For a discussion of the format string, see the definition of pwszQuickComplete.
/// </param>
/// <param name="pwszQuickComplete">
/// A pointer to an optional null-terminated Unicode string that specifies the format to be used if the user enters text and
/// presses CTRL+ENTER. Set this parameter to NULL to disable quick completion. Otherwise, the autocomplete object treats
/// pwszQuickComplete as a StringCchPrintf format string and the text in the edit box as its associated argument, to produce a
/// new string. For example, set pwszQuickComplete to "http://www.%s.com/". When a user enters "MyURL" into the edit box and
/// presses CTRL+ENTER, the text in the edit box is updated to "http://www.MyURL.com/".
/// </param>
new void Init(HWND hwndEdit, IEnumString punkAcl, [MarshalAs(UnmanagedType.LPWStr)] string pwszRegKeyPath, [MarshalAs(UnmanagedType.LPWStr)] string pwszQuickComplete);
/// <summary>Enables or disables autocompletion.</summary>
/// <param name="fEnable">A value that is set to TRUE to enable autocompletion, or FALSE to disable it.</param>
new void Enable([MarshalAs(UnmanagedType.Bool)] bool fEnable);
/// <summary>Sets the current autocomplete options.</summary>
/// <param name="dwFlag">One or more flags from the AUTOCOMPLETEOPTIONS enumeration that specify autocomplete options.</param>
void SetOptions(AUTOCOMPLETEOPTIONS dwFlag);
/// <summary>Gets the current autocomplete options.</summary>
/// <param name="dwFlag">
/// One or more flags from the AUTOCOMPLETEOPTIONS enumeration that indicate the options that are currently set.
/// </param>
void GetOptions(out AUTOCOMPLETEOPTIONS dwFlag);
}
/// <summary>Undocumented.</summary>
[PInvokeData("shldisp.h")]
[ComImport, Guid("2D91EEA1-9932-11D2-BE86-00A0C9A83DA1"), CoClass(typeof(FileSearchBand))]
public interface IFileSearchBand
{
/// <summary>Undocumented.</summary>
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(1)]
void SetFocus();
/// <summary>Undocumented.</summary>
/// <param name="pbstrSearchID"/>
/// <param name="bNavToResults"/>
/// <param name="pvarScope"/>
/// <param name="pvarQueryFile"/>
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(2)]
void SetSearchParameters([In, MarshalAs(UnmanagedType.BStr)] ref string pbstrSearchID, [In] bool bNavToResults, [In, Optional, MarshalAs(UnmanagedType.Struct)] ref object pvarScope, [In, Optional, MarshalAs(UnmanagedType.Struct)] ref object pvarQueryFile);
/// <summary>Undocumented.</summary>
[DispId(3)]
string SearchID { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(3)] get; }
/// <summary>Undocumented.</summary>
[DispId(4)]
object Scope { [return: MarshalAs(UnmanagedType.Struct)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(4)] get; }
/// <summary>Undocumented.</summary>
[DispId(5)]
object QueryFile { [return: MarshalAs(UnmanagedType.Struct)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(5)] get; }
}
/// <summary>Undocumented.</summary>
[PInvokeData("shldisp.h")]
[ComImport, Guid("9BA05970-F6A8-11CF-A442-00A0C90A8F39"), CoClass(typeof(ShellFolderViewOC))]
public interface IFolderViewOC
{
/// <summary>Undocumented.</summary>
/// <param name="pdisp"/>
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020000)]
void SetFolderView([In, MarshalAs(UnmanagedType.IDispatch)] object pdisp);
}
/// <summary>
/// Extends the <c>WebWizardHost</c> object by enabling server-side pages hosted in a wizard to verify that the user has been
/// authenticated through a Microsoft account.
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/newwdevents
[PInvokeData("shldisp.h", MSDNShortId = "44f2431c-82a2-4142-bf20-55fdd0c88008")]
[ComImport, Guid("0751C551-7568-41C9-8E5B-E22E38919236")]
public interface INewWDEvents : IWebWizardHost
{
/// <summary>Navigates to the client-side page immediately preceding the page hosting the server-side HTML pages.</summary>
/// <remarks>
/// When the wizard displays the first server-side page and the user clicks the <c>Back</c> button, the server invokes
/// <c>FinalBack</c> when notified of that event by the client's event handler.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/iwebwizardhost-finalback
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0)]
new void FinalBack();
/// <summary>
/// Navigates to the client-side wizard page that follows the page that hosts the server-side HTML pages, or finishes the wizard
/// if there are no further client-side pages.
/// </summary>
/// <remarks>
/// When the wizard is displaying the last server-side HTML page and the user clicks the <c>Next</c> or <c>Finish</c> button, the
/// server invokes <c>FinalNext</c> in that button's event handler.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/iwebwizardhost-finalnext
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(1)]
new void FinalNext();
/// <summary>Simulates a <c>Cancel</c> button click.</summary>
/// <remarks>The client is responsible for responding to this method with the expected behavior by closing the wizard.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/iwebwizardhost-cancel
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(2)]
new void Cancel();
/// <summary>This property is not implemented.</summary>
// https://docs.microsoft.com/en-us/previous-versions/windows/desktop/legacy/bb774352(v=vs.85)
[DispId(3)]
new string Caption { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(3)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(3)] set; }
/// <summary>Sets or retrieves a property's current value.</summary>
/// <value>The property value.</value>
/// <param name="bstrPropertyName">Name of the property.</param>
[DispId(4)]
new object this[string bstrPropertyName] { [return: MarshalAs(UnmanagedType.Struct)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(4)] get; [param: In, MarshalAs(UnmanagedType.Struct)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(4)] set; }
/// <summary>Updates the <c>Back</c>, <c>Next</c>, and <c>Finish</c> buttons in the client's wizard frame.</summary>
/// <param name="vfEnableBack">Enables the <c>Back</c> button.</param>
/// <param name="vfEnableNext">Enables the <c>Next</c> button.</param>
/// <param name="vfLastPage">Enables the <c>Finish</c> button. States that this is the last server-side page.</param>
/// <remarks>
/// Be sure to implement handler functions in each server-side page for OnBack() and OnNext(), corresponding to the wizard
/// buttons <c>Back</c> and <c>Next</c>. The OnBack() and OnNext() functions respond to <c>SetWizardButtons</c>. At the
/// appropriate time, the OnNext() function calls <c>SetWizardButtons</c> with vbLastPage= <c>true</c>, which can enable a
/// <c>Finish</c> button. OnNext() also calls <c>FinalNext</c> when a user clicks the <c>Finish</c> button.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/iwebwizardhost-setwizardbuttons
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(5)]
new void SetWizardButtons([In] bool vfEnableBack, [In] bool vfEnableNext, [In] bool vfLastPage);
/// <summary>
/// Sets the title and subtitle that appear in the wizard header. In general, the client will display the header above the HTML
/// and below the title bar.
/// </summary>
/// <param name="bstrHeaderTitle">String containing the title.</param>
/// <param name="bstrHeaderSubtitle">String containing the subtitle.</param>
// https://docs.microsoft.com/en-us/windows/win32/shell/iwebwizardhost-setheadertext
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(6)]
new void SetHeaderText([In, MarshalAs(UnmanagedType.BStr)] string bstrHeaderTitle, [In, MarshalAs(UnmanagedType.BStr)] string bstrHeaderSubtitle);
/// <summary>
/// Enables server-side pages hosted in a wizard to verify that the user has been authenticated through a Microsoft account.
/// </summary>
/// <param name="bstrSignInUrl">A string containing the URL of a webpage that redirects to the Microsoft account log on UI.</param>
/// <returns>Set to <c>true</c> if authentication succeeds, <c>false</c> otherwise.</returns>
/// <remarks>
/// This method may be called even if a user is already logged on to a Microsoft account. In that case, the method returns
/// <c>true</c> without displaying the Microsoft account log on UI.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/inewwdevents-passportauthenticate
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(7)]
bool PassportAuthenticate([In, MarshalAs(UnmanagedType.BStr)] string bstrSignInUrl);
}
/// <summary>
/// Represents an object in the Shell. Methods are provided to control the Shell and to execute commands within the Shell. There are
/// also methods to obtain other Shell-related objects.
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch
[PInvokeData("shldisp.h", MSDNShortId = "9B429C03-7F80-45db-B8CD-58D19FAD2E61")]
[ComImport, Guid("D8F015C0-C278-11CE-A49E-444553540000"), CoClass(typeof(Shell))]
public interface IShellDispatch
{
/// <summary>
/// <para>Contains an object that represents an application.</para>
/// <para>This property is read-only.</para>
/// </summary>
/// <remarks>
/// <para>This property is implemented and accessed through the <c>Shell.EjectPC</c> property.</para>
/// <para>
/// The <c>Application</c> property returns the automation object supported by the application that contains the WebBrowser
/// control, if that object is accessible. Otherwise, this property returns the WebBrowser control's automation object.
/// </para>
/// <para>
/// Use this property with the <c>Set</c> and <c>CreateObject</c> commands or with the <c>GetObject</c> command to create and
/// manipulate an instance of the Windows Internet Explorer application.
/// </para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-application
[DispId(0x60020000)]
object Application { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020000)] get; }
/// <summary>
/// <para>Retrieves an object that represents the parent of the current object.</para>
/// <para>This property is read-only.</para>
/// </summary>
/// <remarks>This property is implemented and accessed through the <c>Shell.Parent</c> property.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-parent
[DispId(0x60020001)]
object Parent { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020001)] get; }
/// <summary>Creates and returns a <c>Folder</c> object for the specified folder.</summary>
/// <param name="vDir">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// The folder for which to create the <c>Folder</c> object. This can be a string that specifies the path of the folder or one of
/// the <c>ShellSpecialFolderConstants</c> values. Note that the constant names found in <c>ShellSpecialFolderConstants</c> are
/// available in Visual Basic, but not in VBScript or JScript. In those cases, the numeric values must be used in their place.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c><c>Folder</c>**</c></para>
/// <para>
/// Object reference to the <c>Folder</c> object for the specified folder. If the folder is not successfully created, this value
/// returns <c>null</c>.
/// </para>
/// <para>VB</para>
/// <para>Type: <c><c>Folder</c>**</c></para>
/// <para>
/// Object reference to the <c>Folder</c> object for the specified folder. If the folder is not successfully created, this value
/// returns <c>null</c>.
/// </para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.NameSpace</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-namespace
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020002)]
Folder NameSpace([In, MarshalAs(UnmanagedType.Struct)] object vDir);
/// <summary>
/// Creates a dialog box that enables the user to select a folder and then returns the selected folder's <c>Folder</c> object.
/// </summary>
/// <param name="Hwnd">
/// <para>Type: <c>Integer</c></para>
/// <para>The handle to the parent window of the dialog box. This value can be zero.</para>
/// </param>
/// <param name="Title">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> value that represents the title displayed inside the <c>Browse</c> dialog box.</para>
/// </param>
/// <param name="Options">
/// <para>Type: <c>Integer</c></para>
/// <para>
/// An <c>Integer</c> value that contains the options for the method. This can be zero or a combination of the values listed
/// under the <c>ulFlags</c> member of the <c>BROWSEINFO</c> structure.
/// </para>
/// </param>
/// <param name="RootFolder">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// The root folder to use in the dialog box. The user cannot browse higher in the tree than this folder. If this value is not
/// specified, the root folder used in the dialog box is the desktop. This value can be a string that specifies the path of the
/// folder or one of the <c>ShellSpecialFolderConstants</c> values. Note that the constant names found in
/// <c>ShellSpecialFolderConstants</c> are available in Visual Basic, but not in VBScript or JScript. In those cases, the numeric
/// values must be used in their place.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>FOLDER**</c></para>
/// <para>An object reference to the selected folder's <c>Folder</c> object.</para>
/// <para>VB</para>
/// <para>Type: <c>FOLDER**</c></para>
/// <para>An object reference to the selected folder's <c>Folder</c> object.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.BrowseForFolder</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-browseforfolder
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020003)]
Folder BrowseForFolder([In] int Hwnd, [In, MarshalAs(UnmanagedType.BStr)] string Title, [In] int Options, [In, Optional, MarshalAs(UnmanagedType.Struct)] object RootFolder);
/// <summary>
/// Creates and returns a <c>ShellWindows</c> object. This object represents a collection of all of the open windows that belong
/// to the Shell.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c><c>IDispatch</c>**</c></para>
/// <para>An object reference to the <c>ShellWindows</c> object.</para>
/// <para>VB</para>
/// <para>Type: <c><c>IDispatch</c>**</c></para>
/// <para>An object reference to the <c>ShellWindows</c> object.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.Windows</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-windows
[return: MarshalAs(UnmanagedType.IDispatch)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020004)]
object Windows();
/// <summary>Opens the specified folder.</summary>
/// <param name="vDir">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// A string that specifies the path of the folder or one of the <c>ShellSpecialFolderConstants</c> values. Note that the
/// constant names found in <c>ShellSpecialFolderConstants</c> are available in Visual Basic, but not in VBScript or JScript. In
/// those cases, the numeric values must be used in their place.
/// </para>
/// <para>
/// If vDir is set to one of the <c>ShellSpecialFolderConstants</c> and the special folder does not exist, this function will
/// create the folder.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.Open</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-open
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020005)]
void Open([In, MarshalAs(UnmanagedType.Struct)] object vDir);
/// <summary>Opens a specified folder in a Windows Explorer window.</summary>
/// <param name="vDir">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// The folder to be displayed. This can be a string that specifies the path of the folder or one of the
/// <c>ShellSpecialFolderConstants</c> values. Note that the constant names found in <c>ShellSpecialFolderConstants</c> are
/// available in Visual Basic, but not in VBScript or JScript. In those cases, the numeric values must be used in their place.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.Explore</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-explore
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020006)]
void Explore([In, MarshalAs(UnmanagedType.Struct)] object vDir);
/// <summary>
/// Minimizes all of the windows on the desktop. This method has the same effect as right-clicking the taskbar and selecting
/// <c>Minimize All Windows</c> on older systems or clicking the <c>Show Desktop</c> icon on the taskbar.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.MinimizeAll</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-minimizeall
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020007)]
void MinimizeAll();
/// <summary>
/// Restores all desktop windows to the state they were in before the last <c>MinimizeAll</c> command. This method has the same
/// effect as right-clicking the taskbar and selecting <c>Undo Minimize All Windows</c> (on older systems) or a second clicking
/// of the <c>Show Desktop</c> icon in the taskbar.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.UndoMinimizeAll</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-undominimizeall
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020008)]
void UndoMinimizeALL();
/// <summary>Displays the <c>Run</c> dialog to the user.</summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.FileRun</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-filerun
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020009)]
void FileRun();
/// <summary>
/// Cascades all of the windows on the desktop. This method has the same effect as right-clicking the taskbar and selecting
/// <c>Cascade windows</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.CascadeWindows</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-cascadewindows
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000a)]
void CascadeWindows();
/// <summary>
/// Tiles all of the windows on the desktop vertically. This method has the same effect as right-clicking the taskbar and
/// selecting <c>Show windows side by side</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.TileVertically</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-tilevertically
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000b)]
void TileVertically();
/// <summary>
/// Tiles all of the windows on the desktop horizontally. This method has the same effect as right-clicking the taskbar and
/// selecting <c>Show windows stacked</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.TileHorizontally</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-tilehorizontally
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000c)]
void TileHorizontally();
/// <summary>
/// Displays the <c>Shut Down Windows</c> dialog box. This is the same as clicking the <c>Start</c> menu and selecting <c>Shut Down</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.ShutdownWindows</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-shutdownwindows
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000d)]
void ShutdownWindows();
/// <summary>This method is not implemented.</summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-suspend
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000e)]
void Suspend();
/// <summary>
/// Ejects the computer from its docking station. This is the same as clicking the <c>Start</c> menu and selecting <c>Eject
/// PC</c>, if your computer supports this command.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.EjectPC</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-ejectpc
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000f)]
void EjectPC();
/// <summary>
/// Displays the <c>Date and Time</c> dialog box. This method has the same effect as right-clicking the clock in the taskbar
/// status area and selecting <c>Adjust date/time</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.SetTime</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-settime
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020010)]
void SetTime();
/// <summary>
/// Displays the <c>Taskbar and Start Menu Properties</c> dialog box. This method has the same effect as right-clicking the
/// taskbar and selecting <c>Properties</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.TrayProperties</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-trayproperties
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020011)]
void TrayProperties();
/// <summary>
/// Displays the Windows Help and Support window. This method has the same effect as clicking the <c>Start</c> menu and selecting
/// <c>Help and Support</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.Help</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-help
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020012)]
void Help();
/// <summary>
/// Displays the <c>Find: All Files</c> dialog box. This is the same as clicking the <c>Start</c> menu and then selecting <c>Search</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.FindFiles</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-findfiles
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020013)]
void FindFiles();
/// <summary>
/// Displays the <c>Search Results: Computers</c> dialog box. The dialog box shows the result of the search for a specified computer.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.FindComputer</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-findcomputer
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020014)]
void FindComputer();
/// <summary>Refreshes the contents of the <c>Start</c> menu. Used only with systems preceding Windows XP.</summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.TrayProperties</c> method.</para>
/// <para>
/// The functionality that <c>RefreshMenu</c> provides is handled automatically under Windows XP or later. Do not call this
/// method on Windows XP or later.
/// </para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-refreshmenu
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020015)]
void RefreshMenu();
/// <summary>
/// Runs the specified Control Panel application. If the application is already open, it will activate the running instance.
/// </summary>
/// <param name="bstrDir">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>The Control Panel application's file name.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.ControlPanelItem</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-controlpanelitem
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020016)]
void ControlPanelItem([In, MarshalAs(UnmanagedType.BStr)] string bstrDir);
}
/// <summary>Extends the <c>IShellDispatch</c> object with a variety of new functionality.</summary>
/// <remarks>For a discussion of Windows services, see the Services documentation.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-object
[PInvokeData("shldisp.h", MSDNShortId = "74687929-0777-479b-9853-2b0cf4b6adc9")]
[ComImport, Guid("A4C6892C-3BA9-11D2-9DEA-00C04FB16162"), CoClass(typeof(Shell))]
public interface IShellDispatch2 : IShellDispatch
{
/// <summary>
/// <para>Contains an object that represents an application.</para>
/// <para>This property is read-only.</para>
/// </summary>
/// <remarks>
/// <para>This property is implemented and accessed through the <c>Shell.EjectPC</c> property.</para>
/// <para>
/// The <c>Application</c> property returns the automation object supported by the application that contains the WebBrowser
/// control, if that object is accessible. Otherwise, this property returns the WebBrowser control's automation object.
/// </para>
/// <para>
/// Use this property with the <c>Set</c> and <c>CreateObject</c> commands or with the <c>GetObject</c> command to create and
/// manipulate an instance of the Windows Internet Explorer application.
/// </para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-application
[DispId(0x60020000)]
new object Application { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020000)] get; }
/// <summary>
/// <para>Retrieves an object that represents the parent of the current object.</para>
/// <para>This property is read-only.</para>
/// </summary>
/// <remarks>This property is implemented and accessed through the <c>Shell.Parent</c> property.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-parent
[DispId(0x60020001)]
new object Parent { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020001)] get; }
/// <summary>Creates and returns a <c>Folder</c> object for the specified folder.</summary>
/// <param name="vDir">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// The folder for which to create the <c>Folder</c> object. This can be a string that specifies the path of the folder or one of
/// the <c>ShellSpecialFolderConstants</c> values. Note that the constant names found in <c>ShellSpecialFolderConstants</c> are
/// available in Visual Basic, but not in VBScript or JScript. In those cases, the numeric values must be used in their place.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c><c>Folder</c>**</c></para>
/// <para>
/// Object reference to the <c>Folder</c> object for the specified folder. If the folder is not successfully created, this value
/// returns <c>null</c>.
/// </para>
/// <para>VB</para>
/// <para>Type: <c><c>Folder</c>**</c></para>
/// <para>
/// Object reference to the <c>Folder</c> object for the specified folder. If the folder is not successfully created, this value
/// returns <c>null</c>.
/// </para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.NameSpace</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-namespace
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020002)]
new Folder NameSpace([In, MarshalAs(UnmanagedType.Struct)] object vDir);
/// <summary>
/// Creates a dialog box that enables the user to select a folder and then returns the selected folder's <c>Folder</c> object.
/// </summary>
/// <param name="Hwnd">
/// <para>Type: <c>Integer</c></para>
/// <para>The handle to the parent window of the dialog box. This value can be zero.</para>
/// </param>
/// <param name="Title">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> value that represents the title displayed inside the <c>Browse</c> dialog box.</para>
/// </param>
/// <param name="Options">
/// <para>Type: <c>Integer</c></para>
/// <para>
/// An <c>Integer</c> value that contains the options for the method. This can be zero or a combination of the values listed
/// under the <c>ulFlags</c> member of the <c>BROWSEINFO</c> structure.
/// </para>
/// </param>
/// <param name="RootFolder">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// The root folder to use in the dialog box. The user cannot browse higher in the tree than this folder. If this value is not
/// specified, the root folder used in the dialog box is the desktop. This value can be a string that specifies the path of the
/// folder or one of the <c>ShellSpecialFolderConstants</c> values. Note that the constant names found in
/// <c>ShellSpecialFolderConstants</c> are available in Visual Basic, but not in VBScript or JScript. In those cases, the numeric
/// values must be used in their place.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>FOLDER**</c></para>
/// <para>An object reference to the selected folder's <c>Folder</c> object.</para>
/// <para>VB</para>
/// <para>Type: <c>FOLDER**</c></para>
/// <para>An object reference to the selected folder's <c>Folder</c> object.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.BrowseForFolder</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-browseforfolder
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020003)]
new Folder BrowseForFolder([In] int Hwnd, [In, MarshalAs(UnmanagedType.BStr)] string Title, [In] int Options, [In, Optional, MarshalAs(UnmanagedType.Struct)] object RootFolder);
/// <summary>
/// Creates and returns a <c>ShellWindows</c> object. This object represents a collection of all of the open windows that belong
/// to the Shell.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c><c>IDispatch</c>**</c></para>
/// <para>An object reference to the <c>ShellWindows</c> object.</para>
/// <para>VB</para>
/// <para>Type: <c><c>IDispatch</c>**</c></para>
/// <para>An object reference to the <c>ShellWindows</c> object.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.Windows</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-windows
[return: MarshalAs(UnmanagedType.IDispatch)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020004)]
new object Windows();
/// <summary>Opens the specified folder.</summary>
/// <param name="vDir">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// A string that specifies the path of the folder or one of the <c>ShellSpecialFolderConstants</c> values. Note that the
/// constant names found in <c>ShellSpecialFolderConstants</c> are available in Visual Basic, but not in VBScript or JScript. In
/// those cases, the numeric values must be used in their place.
/// </para>
/// <para>
/// If vDir is set to one of the <c>ShellSpecialFolderConstants</c> and the special folder does not exist, this function will
/// create the folder.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.Open</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-open
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020005)]
new void Open([In, MarshalAs(UnmanagedType.Struct)] object vDir);
/// <summary>Opens a specified folder in a Windows Explorer window.</summary>
/// <param name="vDir">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// The folder to be displayed. This can be a string that specifies the path of the folder or one of the
/// <c>ShellSpecialFolderConstants</c> values. Note that the constant names found in <c>ShellSpecialFolderConstants</c> are
/// available in Visual Basic, but not in VBScript or JScript. In those cases, the numeric values must be used in their place.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.Explore</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-explore
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020006)]
new void Explore([In, MarshalAs(UnmanagedType.Struct)] object vDir);
/// <summary>
/// Minimizes all of the windows on the desktop. This method has the same effect as right-clicking the taskbar and selecting
/// <c>Minimize All Windows</c> on older systems or clicking the <c>Show Desktop</c> icon on the taskbar.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.MinimizeAll</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-minimizeall
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020007)]
new void MinimizeAll();
/// <summary>
/// Restores all desktop windows to the state they were in before the last <c>MinimizeAll</c> command. This method has the same
/// effect as right-clicking the taskbar and selecting <c>Undo Minimize All Windows</c> (on older systems) or a second clicking
/// of the <c>Show Desktop</c> icon in the taskbar.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.UndoMinimizeAll</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-undominimizeall
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020008)]
new void UndoMinimizeALL();
/// <summary>Displays the <c>Run</c> dialog to the user.</summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.FileRun</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-filerun
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020009)]
new void FileRun();
/// <summary>
/// Cascades all of the windows on the desktop. This method has the same effect as right-clicking the taskbar and selecting
/// <c>Cascade windows</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.CascadeWindows</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-cascadewindows
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000a)]
new void CascadeWindows();
/// <summary>
/// Tiles all of the windows on the desktop vertically. This method has the same effect as right-clicking the taskbar and
/// selecting <c>Show windows side by side</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.TileVertically</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-tilevertically
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000b)]
new void TileVertically();
/// <summary>
/// Tiles all of the windows on the desktop horizontally. This method has the same effect as right-clicking the taskbar and
/// selecting <c>Show windows stacked</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.TileHorizontally</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-tilehorizontally
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000c)]
new void TileHorizontally();
/// <summary>
/// Displays the <c>Shut Down Windows</c> dialog box. This is the same as clicking the <c>Start</c> menu and selecting <c>Shut Down</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.ShutdownWindows</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-shutdownwindows
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000d)]
new void ShutdownWindows();
/// <summary>This method is not implemented.</summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-suspend
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000e)]
new void Suspend();
/// <summary>
/// Ejects the computer from its docking station. This is the same as clicking the <c>Start</c> menu and selecting <c>Eject
/// PC</c>, if your computer supports this command.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.EjectPC</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-ejectpc
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000f)]
new void EjectPC();
/// <summary>
/// Displays the <c>Date and Time</c> dialog box. This method has the same effect as right-clicking the clock in the taskbar
/// status area and selecting <c>Adjust date/time</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.SetTime</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-settime
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020010)]
new void SetTime();
/// <summary>
/// Displays the <c>Taskbar and Start Menu Properties</c> dialog box. This method has the same effect as right-clicking the
/// taskbar and selecting <c>Properties</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.TrayProperties</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-trayproperties
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020011)]
new void TrayProperties();
/// <summary>
/// Displays the Windows Help and Support window. This method has the same effect as clicking the <c>Start</c> menu and selecting
/// <c>Help and Support</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.Help</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-help
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020012)]
new void Help();
/// <summary>
/// Displays the <c>Find: All Files</c> dialog box. This is the same as clicking the <c>Start</c> menu and then selecting <c>Search</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.FindFiles</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-findfiles
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020013)]
new void FindFiles();
/// <summary>
/// Displays the <c>Search Results: Computers</c> dialog box. The dialog box shows the result of the search for a specified computer.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.FindComputer</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-findcomputer
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020014)]
new void FindComputer();
/// <summary>Refreshes the contents of the <c>Start</c> menu. Used only with systems preceding Windows XP.</summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.TrayProperties</c> method.</para>
/// <para>
/// The functionality that <c>RefreshMenu</c> provides is handled automatically under Windows XP or later. Do not call this
/// method on Windows XP or later.
/// </para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-refreshmenu
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020015)]
new void RefreshMenu();
/// <summary>
/// Runs the specified Control Panel application. If the application is already open, it will activate the running instance.
/// </summary>
/// <param name="bstrDir">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>The Control Panel application's file name.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.ControlPanelItem</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-controlpanelitem
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020016)]
new void ControlPanelItem([In, MarshalAs(UnmanagedType.BStr)] string bstrDir);
/// <summary>Retrieves a group's restriction setting from the registry.</summary>
/// <param name="sGroup">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>
/// A <c>String</c> that contains the group name. This value is the name of a registry subkey under which to check for the restriction.
/// </para>
/// </param>
/// <param name="sRestriction">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the restriction whose value is to be retrieved.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Integer*</c></para>
/// <para>The value of the restriction. If the specified restriction is not found, the return value is 0.</para>
/// <para>VB</para>
/// <para>Type: <c>Integer*</c></para>
/// <para>The value of the restriction. If the specified restriction is not found, the return value is 0.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.IsRestricted</c> method.</para>
/// <para><c>IsRestricted</c> first looks for a subkey name that matches sGroup under the following key.</para>
/// <para>
/// Restrictions are declared as values of the individual policy subkeys. If the restriction named in sRestriction is found in
/// the subkey named in sGroup, <c>IsRestricted</c> returns the restriction's current value. If the restriction is not found
/// under <c>HKEY_LOCAL_MACHINE</c>, the same subkey is checked under <c>HKEY_CURRENT_USER</c>.
/// </para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-isrestricted
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030000)]
int IsRestricted([In, MarshalAs(UnmanagedType.BStr)] string sGroup, [In, MarshalAs(UnmanagedType.BStr)] string sRestriction);
/// <summary>Performs a specified operation on a specified file.</summary>
/// <param name="sFile">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>
/// A <c>String</c> that contains the name of the file on which <c>ShellExecute</c> will perform the action specified by vOperation.
/// </para>
/// </param>
/// <param name="vArguments">
/// <para>Type: <c>Variant</c></para>
/// <para>A string that contains parameter values for the operation.</para>
/// </param>
/// <param name="vDirectory">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// The fully qualified path of the directory that contains the file specified by sFile. If this parameter is not specified, the
/// current working directory is used.
/// </para>
/// </param>
/// <param name="vOperation">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// The operation to be performed. This value is set to one of the verb strings that is supported by the file. For a discussion
/// of verbs, see the Remarks section. If this parameter is not specified, the default operation is performed.
/// </para>
/// </param>
/// <param name="vShow">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// A recommendation as to how the application window should be displayed initially. The application can ignore this
/// recommendation. This parameter can be one of the following values. If this parameter is not specified, the application uses
/// its default value.
/// </para>
/// <list type="table">
/// <listheader>
/// <term>Value</term>
/// <term>Meaning</term>
/// </listheader>
/// <item>
/// <term>0</term>
/// <term>Open the application with a hidden window.</term>
/// </item>
/// <item>
/// <term>1</term>
/// <term>
/// Open the application with a normal window. If the window is minimized or maximized, the system restores it to its original
/// size and position.
/// </term>
/// </item>
/// <item>
/// <term>2</term>
/// <term>Open the application with a minimized window.</term>
/// </item>
/// <item>
/// <term>3</term>
/// <term>Open the application with a maximized window.</term>
/// </item>
/// <item>
/// <term>4</term>
/// <term>Open the application with its window at its most recent size and position. The active window remains active.</term>
/// </item>
/// <item>
/// <term>5</term>
/// <term>Open the application with its window at its current size and position.</term>
/// </item>
/// <item>
/// <term>7</term>
/// <term>Open the application with a minimized window. The active window remains active.</term>
/// </item>
/// <item>
/// <term>10</term>
/// <term>Open the application with its window in the default state specified by the application.</term>
/// </item>
/// </list>
/// </param>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.ShellExecute</c> method.</para>
/// <para>
/// This method is equivalent to launching one of the commands associated with a file's shortcut menu. Each command is
/// represented by a verb string. The set of supported verbs varies from file to file. The most commonly supported verb is
/// "open", which is also usually the default verb. Other verbs might be supported by only certain types of files. For further
/// discussion of Shell verbs, see Launching Applications or Extending Shortcut Menus.
/// </para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-shellexecute
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030001)]
void ShellExecute([In, MarshalAs(UnmanagedType.BStr)] string sFile, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vArguments, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vDirectory, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vOperation, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vShow);
/// <summary>Displays the <c>Find Printer</c> dialog box.</summary>
/// <param name="Name">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the printer name.</para>
/// </param>
/// <param name="location">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the printer location.</para>
/// </param>
/// <param name="model">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the printer model.</para>
/// </param>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.FindPrinter</c> method.</para>
/// <para>
/// If you assign strings to one or more of the optional parameters, they are displayed as default values in the associated edit
/// control when the <c>Find Printer</c> dialog box is displayed. The user can either accept or override these values. If no
/// value is assigned to a parameter, the associated edit box is empty and the user must enter a value.
/// </para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-findprinter
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030002)]
void FindPrinter([In, Optional, MarshalAs(UnmanagedType.BStr)] string Name, [In, Optional, MarshalAs(UnmanagedType.BStr)] string location, [In, Optional, MarshalAs(UnmanagedType.BStr)] string model);
/// <summary>Retrieves system information.</summary>
/// <param name="sName">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that specifies the system information that is being requested.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant</c></para>
/// <para>
/// Returns the value of the requested system information. The return type depends on which system information is requested. See
/// the Remarks section for details.
/// </para>
/// <para>VB</para>
/// <para>Type: <c>Variant</c></para>
/// <para>
/// Returns the value of the requested system information. The return type depends on which system information is requested. See
/// the Remarks section for details.
/// </para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.GetSystemInformation</c> method.</para>
/// <para>
/// This method can be used to request many system information values. The following table gives the sName value that is used to
/// request the information and the associated type of the returned value.
/// </para>
/// <para>sName</para>
/// <para>Return type</para>
/// <para>Description</para>
/// <para>DirectoryServiceAvailable</para>
/// <para><c>Boolean</c></para>
/// <para>Set to <c>true</c> if the directory service is available; otherwise, <c>false</c>.</para>
/// <para>DoubleClickTime</para>
/// <para><c>Integer</c></para>
/// <para>The double-click time, in milliseconds.</para>
/// <para>ProcessorLevel</para>
/// <para><c>Integer</c></para>
/// <para>
/// <c>Windows Vista and later</c>. The processor level. Returns 3, 4, or 5, for x386, x486, and Pentium-level processors, respectively.
/// </para>
/// <para>ProcessorSpeed</para>
/// <para><c>Integer</c></para>
/// <para>The processor speed, in megahertz (MHz).</para>
/// <para>ProcessorArchitecture</para>
/// <para><c>Integer</c></para>
/// <para>
/// The processor architecture. For details, see the discussion of the <c>wProcessorArchitecture</c> member of the
/// <c>SYSTEM_INFO</c> structure.
/// </para>
/// <para>PhysicalMemoryInstalled</para>
/// <para><c>Integer</c></para>
/// <para>The amount of physical memory installed, in bytes.</para>
/// <para>The following are valid only on Windows XP.</para>
/// <para>IsOS_Professional</para>
/// <para><c>Boolean</c></para>
/// <para>Set to <c>true</c> if the operating system is Windows XP Professional Edition; otherwise, <c>false</c>.</para>
/// <para>IsOS_Personal</para>
/// <para><c>Boolean</c></para>
/// <para>Set to <c>true</c> if the operating system is Windows XP Home Edition; otherwise, <c>false</c>.</para>
/// <para>The following is valid only on Windows XP and later.</para>
/// <para>IsOS_DomainMember</para>
/// <para><c>Boolean</c></para>
/// <para>Set to <c>true</c> if the computer is a member of a domain; otherwise, <c>false</c>.</para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-getsysteminformation
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030003)]
object GetSystemInformation([In, MarshalAs(UnmanagedType.BStr)] string sName);
/// <summary>Starts a named service.</summary>
/// <param name="sServiceName">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the name of the service.</para>
/// </param>
/// <param name="vPersistent">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// Set to <c>true</c> to have the service started automatically by the service control manager during system startup. Set to
/// <c>false</c> to leave the service configuration unchanged.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// <para>VB</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.ServiceStart</c> method.</para>
/// <para>
/// The method returns <c>false</c> if the service has already been started. Before calling this method, you can call
/// <c>Shell.IsServiceRunning</c> to ascertain the status of the service.
/// </para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-servicestart
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030004)]
object ServiceStart([In, MarshalAs(UnmanagedType.BStr)] string sServiceName, [In, MarshalAs(UnmanagedType.Struct)] object vPersistent);
/// <summary>Stops a named service.</summary>
/// <param name="sServiceName">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the name of the service.</para>
/// </param>
/// <param name="vPersistent">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// Set to <c>true</c> to have the service started by the service control manager when <c>ServiceStart</c> is called. To leave
/// the service configuration unchanged, set vPersistent to <c>false</c>.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// <para>VB</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.ServiceStop</c> method.</para>
/// <para>
/// The method returns <c>false</c> if the service has already been stopped. Before calling this method, you can call
/// <c>Shell.IsServiceRunning</c> to ascertain the status of the service.
/// </para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-servicestop
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030005)]
object ServiceStop([In, MarshalAs(UnmanagedType.BStr)] string sServiceName, [In, MarshalAs(UnmanagedType.Struct)] object vPersistent);
/// <summary>Returns a value that indicates whether a particular service is running.</summary>
/// <param name="sServiceName">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the name of the service.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if the service specified by sServiceName is running; otherwise, <c>false</c>.</para>
/// <para>VB</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if the service specified by sServiceName is running; otherwise, <c>false</c>.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.IsServiceRunning</c> method.</para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-isservicerunning
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030006)]
object IsServiceRunning([In, MarshalAs(UnmanagedType.BStr)] string sServiceName);
/// <summary>Determines if the current user can start and stop the named service.</summary>
/// <param name="sServiceName">
/// <para>Type: <c>String</c></para>
/// <para>A <c>String</c> that contains the name of the service.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if the user can start and stop the service; otherwise, <c>false</c>.</para>
/// <para>VB</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if the user can start and stop the service; otherwise, <c>false</c>.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.CanStartStopService</c> method.</para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-canstartstopservice
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030007)]
object CanStartStopService([In, MarshalAs(UnmanagedType.BStr)] string sServiceName);
/// <summary>Displays a browser bar.</summary>
/// <param name="sCLSID">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>
/// A <c>String</c> that contains the string form of the CLSID of the browser bar to be displayed. The object must be registered
/// as an Explorer Bar object with a CATID_InfoBand component category. For further information, see Creating Custom Explorer
/// Bars, Tool Bands, and Desk Bands.
/// </para>
/// </param>
/// <param name="vShow">
/// <para>Type: <c>Variant</c></para>
/// <para>Set to <c>true</c> to show the browser bar or <c>false</c> to hide it.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// <para>VB</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.ShowBrowserBar</c> method.</para>
/// <para>
/// You can display one of the standard Explorer Bars by setting the sCLSID parameter to the CLSID of that Explorer Bar. The
/// standard Explorer Bars and their CLSID strings are as follows:
/// </para>
/// <list type="table">
/// <listheader>
/// <term>Explorer Bar</term>
/// <term>CLSID string</term>
/// </listheader>
/// <item>
/// <term>Favorites</term>
/// <term>{EFA24E61-B078-11d0-89E4-00C04FC9E26E}</term>
/// </item>
/// <item>
/// <term>Folders</term>
/// <term>{EFA24E64-B078-11d0-89E4-00C04FC9E26E}</term>
/// </item>
/// <item>
/// <term>History</term>
/// <term>{EFA24E62-B078-11d0-89E4-00C04FC9E26E}</term>
/// </item>
/// <item>
/// <term>Search</term>
/// <term>{30D02401-6A81-11d0-8274-00C04FD5AE38}</term>
/// </item>
/// </list>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-showbrowserbar
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030008)]
object ShowBrowserBar([In, MarshalAs(UnmanagedType.BStr)] string sCLSID, [In, MarshalAs(UnmanagedType.Struct)] object vShow);
}
/// <summary>
/// Extends the <c>IShellDispatch2</c> object. <c>IShellDispatch3</c> supports one new method in addition to the properties and
/// methods supported by <c>IShellDispatch2</c>.
/// </summary>
/// <remarks>For a discussion of Windows services, see the Services documentation.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch3
[PInvokeData("shldisp.h", MSDNShortId = "89d0aa4d-844d-497d-82bb-bcc2bcf9c78b")]
[ComImport, Guid("177160CA-BB5A-411C-841D-BD38FACDEAA0"), CoClass(typeof(Shell))]
public interface IShellDispatch3 : IShellDispatch2
{
/// <summary>
/// <para>Contains an object that represents an application.</para>
/// <para>This property is read-only.</para>
/// </summary>
/// <remarks>
/// <para>This property is implemented and accessed through the <c>Shell.EjectPC</c> property.</para>
/// <para>
/// The <c>Application</c> property returns the automation object supported by the application that contains the WebBrowser
/// control, if that object is accessible. Otherwise, this property returns the WebBrowser control's automation object.
/// </para>
/// <para>
/// Use this property with the <c>Set</c> and <c>CreateObject</c> commands or with the <c>GetObject</c> command to create and
/// manipulate an instance of the Windows Internet Explorer application.
/// </para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-application
[DispId(0x60020000)]
new object Application { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020000)] get; }
/// <summary>
/// <para>Retrieves an object that represents the parent of the current object.</para>
/// <para>This property is read-only.</para>
/// </summary>
/// <remarks>This property is implemented and accessed through the <c>Shell.Parent</c> property.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-parent
[DispId(0x60020001)]
new object Parent { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020001)] get; }
/// <summary>Creates and returns a <c>Folder</c> object for the specified folder.</summary>
/// <param name="vDir">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// The folder for which to create the <c>Folder</c> object. This can be a string that specifies the path of the folder or one of
/// the <c>ShellSpecialFolderConstants</c> values. Note that the constant names found in <c>ShellSpecialFolderConstants</c> are
/// available in Visual Basic, but not in VBScript or JScript. In those cases, the numeric values must be used in their place.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c><c>Folder</c>**</c></para>
/// <para>
/// Object reference to the <c>Folder</c> object for the specified folder. If the folder is not successfully created, this value
/// returns <c>null</c>.
/// </para>
/// <para>VB</para>
/// <para>Type: <c><c>Folder</c>**</c></para>
/// <para>
/// Object reference to the <c>Folder</c> object for the specified folder. If the folder is not successfully created, this value
/// returns <c>null</c>.
/// </para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.NameSpace</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-namespace
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020002)]
new Folder NameSpace([In, MarshalAs(UnmanagedType.Struct)] object vDir);
/// <summary>
/// Creates a dialog box that enables the user to select a folder and then returns the selected folder's <c>Folder</c> object.
/// </summary>
/// <param name="Hwnd">
/// <para>Type: <c>Integer</c></para>
/// <para>The handle to the parent window of the dialog box. This value can be zero.</para>
/// </param>
/// <param name="Title">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> value that represents the title displayed inside the <c>Browse</c> dialog box.</para>
/// </param>
/// <param name="Options">
/// <para>Type: <c>Integer</c></para>
/// <para>
/// An <c>Integer</c> value that contains the options for the method. This can be zero or a combination of the values listed
/// under the <c>ulFlags</c> member of the <c>BROWSEINFO</c> structure.
/// </para>
/// </param>
/// <param name="RootFolder">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// The root folder to use in the dialog box. The user cannot browse higher in the tree than this folder. If this value is not
/// specified, the root folder used in the dialog box is the desktop. This value can be a string that specifies the path of the
/// folder or one of the <c>ShellSpecialFolderConstants</c> values. Note that the constant names found in
/// <c>ShellSpecialFolderConstants</c> are available in Visual Basic, but not in VBScript or JScript. In those cases, the numeric
/// values must be used in their place.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>FOLDER**</c></para>
/// <para>An object reference to the selected folder's <c>Folder</c> object.</para>
/// <para>VB</para>
/// <para>Type: <c>FOLDER**</c></para>
/// <para>An object reference to the selected folder's <c>Folder</c> object.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.BrowseForFolder</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-browseforfolder
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020003)]
new Folder BrowseForFolder([In] int Hwnd, [In, MarshalAs(UnmanagedType.BStr)] string Title, [In] int Options, [In, Optional, MarshalAs(UnmanagedType.Struct)] object RootFolder);
/// <summary>
/// Creates and returns a <c>ShellWindows</c> object. This object represents a collection of all of the open windows that belong
/// to the Shell.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c><c>IDispatch</c>**</c></para>
/// <para>An object reference to the <c>ShellWindows</c> object.</para>
/// <para>VB</para>
/// <para>Type: <c><c>IDispatch</c>**</c></para>
/// <para>An object reference to the <c>ShellWindows</c> object.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.Windows</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-windows
[return: MarshalAs(UnmanagedType.IDispatch)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020004)]
new object Windows();
/// <summary>Opens the specified folder.</summary>
/// <param name="vDir">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// A string that specifies the path of the folder or one of the <c>ShellSpecialFolderConstants</c> values. Note that the
/// constant names found in <c>ShellSpecialFolderConstants</c> are available in Visual Basic, but not in VBScript or JScript. In
/// those cases, the numeric values must be used in their place.
/// </para>
/// <para>
/// If vDir is set to one of the <c>ShellSpecialFolderConstants</c> and the special folder does not exist, this function will
/// create the folder.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.Open</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-open
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020005)]
new void Open([In, MarshalAs(UnmanagedType.Struct)] object vDir);
/// <summary>Opens a specified folder in a Windows Explorer window.</summary>
/// <param name="vDir">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// The folder to be displayed. This can be a string that specifies the path of the folder or one of the
/// <c>ShellSpecialFolderConstants</c> values. Note that the constant names found in <c>ShellSpecialFolderConstants</c> are
/// available in Visual Basic, but not in VBScript or JScript. In those cases, the numeric values must be used in their place.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.Explore</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-explore
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020006)]
new void Explore([In, MarshalAs(UnmanagedType.Struct)] object vDir);
/// <summary>
/// Minimizes all of the windows on the desktop. This method has the same effect as right-clicking the taskbar and selecting
/// <c>Minimize All Windows</c> on older systems or clicking the <c>Show Desktop</c> icon on the taskbar.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.MinimizeAll</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-minimizeall
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020007)]
new void MinimizeAll();
/// <summary>
/// Restores all desktop windows to the state they were in before the last <c>MinimizeAll</c> command. This method has the same
/// effect as right-clicking the taskbar and selecting <c>Undo Minimize All Windows</c> (on older systems) or a second clicking
/// of the <c>Show Desktop</c> icon in the taskbar.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.UndoMinimizeAll</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-undominimizeall
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020008)]
new void UndoMinimizeALL();
/// <summary>Displays the <c>Run</c> dialog to the user.</summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.FileRun</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-filerun
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020009)]
new void FileRun();
/// <summary>
/// Cascades all of the windows on the desktop. This method has the same effect as right-clicking the taskbar and selecting
/// <c>Cascade windows</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.CascadeWindows</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-cascadewindows
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000a)]
new void CascadeWindows();
/// <summary>
/// Tiles all of the windows on the desktop vertically. This method has the same effect as right-clicking the taskbar and
/// selecting <c>Show windows side by side</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.TileVertically</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-tilevertically
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000b)]
new void TileVertically();
/// <summary>
/// Tiles all of the windows on the desktop horizontally. This method has the same effect as right-clicking the taskbar and
/// selecting <c>Show windows stacked</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.TileHorizontally</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-tilehorizontally
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000c)]
new void TileHorizontally();
/// <summary>
/// Displays the <c>Shut Down Windows</c> dialog box. This is the same as clicking the <c>Start</c> menu and selecting <c>Shut Down</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.ShutdownWindows</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-shutdownwindows
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000d)]
new void ShutdownWindows();
/// <summary>This method is not implemented.</summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-suspend
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000e)]
new void Suspend();
/// <summary>
/// Ejects the computer from its docking station. This is the same as clicking the <c>Start</c> menu and selecting <c>Eject
/// PC</c>, if your computer supports this command.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.EjectPC</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-ejectpc
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000f)]
new void EjectPC();
/// <summary>
/// Displays the <c>Date and Time</c> dialog box. This method has the same effect as right-clicking the clock in the taskbar
/// status area and selecting <c>Adjust date/time</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.SetTime</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-settime
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020010)]
new void SetTime();
/// <summary>
/// Displays the <c>Taskbar and Start Menu Properties</c> dialog box. This method has the same effect as right-clicking the
/// taskbar and selecting <c>Properties</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.TrayProperties</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-trayproperties
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020011)]
new void TrayProperties();
/// <summary>
/// Displays the Windows Help and Support window. This method has the same effect as clicking the <c>Start</c> menu and selecting
/// <c>Help and Support</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.Help</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-help
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020012)]
new void Help();
/// <summary>
/// Displays the <c>Find: All Files</c> dialog box. This is the same as clicking the <c>Start</c> menu and then selecting <c>Search</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.FindFiles</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-findfiles
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020013)]
new void FindFiles();
/// <summary>
/// Displays the <c>Search Results: Computers</c> dialog box. The dialog box shows the result of the search for a specified computer.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.FindComputer</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-findcomputer
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020014)]
new void FindComputer();
/// <summary>Refreshes the contents of the <c>Start</c> menu. Used only with systems preceding Windows XP.</summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.TrayProperties</c> method.</para>
/// <para>
/// The functionality that <c>RefreshMenu</c> provides is handled automatically under Windows XP or later. Do not call this
/// method on Windows XP or later.
/// </para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-refreshmenu
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020015)]
new void RefreshMenu();
/// <summary>
/// Runs the specified Control Panel application. If the application is already open, it will activate the running instance.
/// </summary>
/// <param name="bstrDir">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>The Control Panel application's file name.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.ControlPanelItem</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-controlpanelitem
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020016)]
new void ControlPanelItem([In, MarshalAs(UnmanagedType.BStr)] string bstrDir);
/// <summary>Retrieves a group's restriction setting from the registry.</summary>
/// <param name="sGroup">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>
/// A <c>String</c> that contains the group name. This value is the name of a registry subkey under which to check for the restriction.
/// </para>
/// </param>
/// <param name="sRestriction">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the restriction whose value is to be retrieved.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Integer*</c></para>
/// <para>The value of the restriction. If the specified restriction is not found, the return value is 0.</para>
/// <para>VB</para>
/// <para>Type: <c>Integer*</c></para>
/// <para>The value of the restriction. If the specified restriction is not found, the return value is 0.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.IsRestricted</c> method.</para>
/// <para><c>IsRestricted</c> first looks for a subkey name that matches sGroup under the following key.</para>
/// <para>
/// Restrictions are declared as values of the individual policy subkeys. If the restriction named in sRestriction is found in
/// the subkey named in sGroup, <c>IsRestricted</c> returns the restriction's current value. If the restriction is not found
/// under <c>HKEY_LOCAL_MACHINE</c>, the same subkey is checked under <c>HKEY_CURRENT_USER</c>.
/// </para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-isrestricted
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030000)]
new int IsRestricted([In, MarshalAs(UnmanagedType.BStr)] string sGroup, [In, MarshalAs(UnmanagedType.BStr)] string sRestriction);
/// <summary>Performs a specified operation on a specified file.</summary>
/// <param name="sFile">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>
/// A <c>String</c> that contains the name of the file on which <c>ShellExecute</c> will perform the action specified by vOperation.
/// </para>
/// </param>
/// <param name="vArguments">
/// <para>Type: <c>Variant</c></para>
/// <para>A string that contains parameter values for the operation.</para>
/// </param>
/// <param name="vDirectory">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// The fully qualified path of the directory that contains the file specified by sFile. If this parameter is not specified, the
/// current working directory is used.
/// </para>
/// </param>
/// <param name="vOperation">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// The operation to be performed. This value is set to one of the verb strings that is supported by the file. For a discussion
/// of verbs, see the Remarks section. If this parameter is not specified, the default operation is performed.
/// </para>
/// </param>
/// <param name="vShow">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// A recommendation as to how the application window should be displayed initially. The application can ignore this
/// recommendation. This parameter can be one of the following values. If this parameter is not specified, the application uses
/// its default value.
/// </para>
/// <list type="table">
/// <listheader>
/// <term>Value</term>
/// <term>Meaning</term>
/// </listheader>
/// <item>
/// <term>0</term>
/// <term>Open the application with a hidden window.</term>
/// </item>
/// <item>
/// <term>1</term>
/// <term>
/// Open the application with a normal window. If the window is minimized or maximized, the system restores it to its original
/// size and position.
/// </term>
/// </item>
/// <item>
/// <term>2</term>
/// <term>Open the application with a minimized window.</term>
/// </item>
/// <item>
/// <term>3</term>
/// <term>Open the application with a maximized window.</term>
/// </item>
/// <item>
/// <term>4</term>
/// <term>Open the application with its window at its most recent size and position. The active window remains active.</term>
/// </item>
/// <item>
/// <term>5</term>
/// <term>Open the application with its window at its current size and position.</term>
/// </item>
/// <item>
/// <term>7</term>
/// <term>Open the application with a minimized window. The active window remains active.</term>
/// </item>
/// <item>
/// <term>10</term>
/// <term>Open the application with its window in the default state specified by the application.</term>
/// </item>
/// </list>
/// </param>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.ShellExecute</c> method.</para>
/// <para>
/// This method is equivalent to launching one of the commands associated with a file's shortcut menu. Each command is
/// represented by a verb string. The set of supported verbs varies from file to file. The most commonly supported verb is
/// "open", which is also usually the default verb. Other verbs might be supported by only certain types of files. For further
/// discussion of Shell verbs, see Launching Applications or Extending Shortcut Menus.
/// </para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-shellexecute
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030001)]
new void ShellExecute([In, MarshalAs(UnmanagedType.BStr)] string sFile, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vArguments, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vDirectory, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vOperation, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vShow);
/// <summary>Displays the <c>Find Printer</c> dialog box.</summary>
/// <param name="Name">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the printer name.</para>
/// </param>
/// <param name="location">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the printer location.</para>
/// </param>
/// <param name="model">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the printer model.</para>
/// </param>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.FindPrinter</c> method.</para>
/// <para>
/// If you assign strings to one or more of the optional parameters, they are displayed as default values in the associated edit
/// control when the <c>Find Printer</c> dialog box is displayed. The user can either accept or override these values. If no
/// value is assigned to a parameter, the associated edit box is empty and the user must enter a value.
/// </para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-findprinter
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030002)]
new void FindPrinter([In, Optional, MarshalAs(UnmanagedType.BStr)] string Name, [In, Optional, MarshalAs(UnmanagedType.BStr)] string location, [In, Optional, MarshalAs(UnmanagedType.BStr)] string model);
/// <summary>Retrieves system information.</summary>
/// <param name="sName">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that specifies the system information that is being requested.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant</c></para>
/// <para>
/// Returns the value of the requested system information. The return type depends on which system information is requested. See
/// the Remarks section for details.
/// </para>
/// <para>VB</para>
/// <para>Type: <c>Variant</c></para>
/// <para>
/// Returns the value of the requested system information. The return type depends on which system information is requested. See
/// the Remarks section for details.
/// </para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.GetSystemInformation</c> method.</para>
/// <para>
/// This method can be used to request many system information values. The following table gives the sName value that is used to
/// request the information and the associated type of the returned value.
/// </para>
/// <para>sName</para>
/// <para>Return type</para>
/// <para>Description</para>
/// <para>DirectoryServiceAvailable</para>
/// <para><c>Boolean</c></para>
/// <para>Set to <c>true</c> if the directory service is available; otherwise, <c>false</c>.</para>
/// <para>DoubleClickTime</para>
/// <para><c>Integer</c></para>
/// <para>The double-click time, in milliseconds.</para>
/// <para>ProcessorLevel</para>
/// <para><c>Integer</c></para>
/// <para>
/// <c>Windows Vista and later</c>. The processor level. Returns 3, 4, or 5, for x386, x486, and Pentium-level processors, respectively.
/// </para>
/// <para>ProcessorSpeed</para>
/// <para><c>Integer</c></para>
/// <para>The processor speed, in megahertz (MHz).</para>
/// <para>ProcessorArchitecture</para>
/// <para><c>Integer</c></para>
/// <para>
/// The processor architecture. For details, see the discussion of the <c>wProcessorArchitecture</c> member of the
/// <c>SYSTEM_INFO</c> structure.
/// </para>
/// <para>PhysicalMemoryInstalled</para>
/// <para><c>Integer</c></para>
/// <para>The amount of physical memory installed, in bytes.</para>
/// <para>The following are valid only on Windows XP.</para>
/// <para>IsOS_Professional</para>
/// <para><c>Boolean</c></para>
/// <para>Set to <c>true</c> if the operating system is Windows XP Professional Edition; otherwise, <c>false</c>.</para>
/// <para>IsOS_Personal</para>
/// <para><c>Boolean</c></para>
/// <para>Set to <c>true</c> if the operating system is Windows XP Home Edition; otherwise, <c>false</c>.</para>
/// <para>The following is valid only on Windows XP and later.</para>
/// <para>IsOS_DomainMember</para>
/// <para><c>Boolean</c></para>
/// <para>Set to <c>true</c> if the computer is a member of a domain; otherwise, <c>false</c>.</para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-getsysteminformation
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030003)]
new object GetSystemInformation([In, MarshalAs(UnmanagedType.BStr)] string sName);
/// <summary>Starts a named service.</summary>
/// <param name="sServiceName">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the name of the service.</para>
/// </param>
/// <param name="vPersistent">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// Set to <c>true</c> to have the service started automatically by the service control manager during system startup. Set to
/// <c>false</c> to leave the service configuration unchanged.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// <para>VB</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.ServiceStart</c> method.</para>
/// <para>
/// The method returns <c>false</c> if the service has already been started. Before calling this method, you can call
/// <c>Shell.IsServiceRunning</c> to ascertain the status of the service.
/// </para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-servicestart
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030004)]
new object ServiceStart([In, MarshalAs(UnmanagedType.BStr)] string sServiceName, [In, MarshalAs(UnmanagedType.Struct)] object vPersistent);
/// <summary>Stops a named service.</summary>
/// <param name="sServiceName">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the name of the service.</para>
/// </param>
/// <param name="vPersistent">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// Set to <c>true</c> to have the service started by the service control manager when <c>ServiceStart</c> is called. To leave
/// the service configuration unchanged, set vPersistent to <c>false</c>.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// <para>VB</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.ServiceStop</c> method.</para>
/// <para>
/// The method returns <c>false</c> if the service has already been stopped. Before calling this method, you can call
/// <c>Shell.IsServiceRunning</c> to ascertain the status of the service.
/// </para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-servicestop
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030005)]
new object ServiceStop([In, MarshalAs(UnmanagedType.BStr)] string sServiceName, [In, MarshalAs(UnmanagedType.Struct)] object vPersistent);
/// <summary>Returns a value that indicates whether a particular service is running.</summary>
/// <param name="sServiceName">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the name of the service.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if the service specified by sServiceName is running; otherwise, <c>false</c>.</para>
/// <para>VB</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if the service specified by sServiceName is running; otherwise, <c>false</c>.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.IsServiceRunning</c> method.</para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-isservicerunning
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030006)]
new object IsServiceRunning([In, MarshalAs(UnmanagedType.BStr)] string sServiceName);
/// <summary>Determines if the current user can start and stop the named service.</summary>
/// <param name="sServiceName">
/// <para>Type: <c>String</c></para>
/// <para>A <c>String</c> that contains the name of the service.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if the user can start and stop the service; otherwise, <c>false</c>.</para>
/// <para>VB</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if the user can start and stop the service; otherwise, <c>false</c>.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.CanStartStopService</c> method.</para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-canstartstopservice
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030007)]
new object CanStartStopService([In, MarshalAs(UnmanagedType.BStr)] string sServiceName);
/// <summary>Displays a browser bar.</summary>
/// <param name="sCLSID">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>
/// A <c>String</c> that contains the string form of the CLSID of the browser bar to be displayed. The object must be registered
/// as an Explorer Bar object with a CATID_InfoBand component category. For further information, see Creating Custom Explorer
/// Bars, Tool Bands, and Desk Bands.
/// </para>
/// </param>
/// <param name="vShow">
/// <para>Type: <c>Variant</c></para>
/// <para>Set to <c>true</c> to show the browser bar or <c>false</c> to hide it.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// <para>VB</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.ShowBrowserBar</c> method.</para>
/// <para>
/// You can display one of the standard Explorer Bars by setting the sCLSID parameter to the CLSID of that Explorer Bar. The
/// standard Explorer Bars and their CLSID strings are as follows:
/// </para>
/// <list type="table">
/// <listheader>
/// <term>Explorer Bar</term>
/// <term>CLSID string</term>
/// </listheader>
/// <item>
/// <term>Favorites</term>
/// <term>{EFA24E61-B078-11d0-89E4-00C04FC9E26E}</term>
/// </item>
/// <item>
/// <term>Folders</term>
/// <term>{EFA24E64-B078-11d0-89E4-00C04FC9E26E}</term>
/// </item>
/// <item>
/// <term>History</term>
/// <term>{EFA24E62-B078-11d0-89E4-00C04FC9E26E}</term>
/// </item>
/// <item>
/// <term>Search</term>
/// <term>{30D02401-6A81-11d0-8274-00C04FD5AE38}</term>
/// </item>
/// </list>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-showbrowserbar
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030008)]
new object ShowBrowserBar([In, MarshalAs(UnmanagedType.BStr)] string sCLSID, [In, MarshalAs(UnmanagedType.Struct)] object vShow);
/// <summary>Adds a file to the most recently used (MRU) list.</summary>
/// <param name="varFile">
/// <para>Type: <c>Variant</c></para>
/// <para>A <c>String</c> that contains the path of the file to add to the list of recently used documents.</para>
/// <para><c>Windows Vista</c>: Set this parameter to <c>null</c> to clear the recent documents folder.</para>
/// </param>
/// <param name="bstrCategory">A <c>String</c> that contains the name of the category in which to place the file.</param>
// https://docs.microsoft.com/en-us/windows/win32/shell/shell-addtorecent
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60040000)]
void AddToRecent([In, MarshalAs(UnmanagedType.Struct)] object varFile, [In, Optional, MarshalAs(UnmanagedType.BStr)] string bstrCategory);
}
/// <summary>
/// Extends the <c>IShellDispatch3</c> object. In addition to the properties and methods supported by <c>IShellDispatch3</c>,
/// <c>IShellDispatch4</c> supports four additional methods.
/// </summary>
/// <remarks>For a discussion of Windows services, see the Services documentation.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch4
[PInvokeData("shldisp.h", MSDNShortId = "4fe37e38-ee71-41f0-b620-35fdc18f9dbb")]
[ComImport, Guid("EFD84B2D-4BCF-4298-BE25-EB542A59FBDA"), CoClass(typeof(Shell))]
public interface IShellDispatch4 : IShellDispatch3
{
/// <summary>
/// <para>Contains an object that represents an application.</para>
/// <para>This property is read-only.</para>
/// </summary>
/// <remarks>
/// <para>This property is implemented and accessed through the <c>Shell.EjectPC</c> property.</para>
/// <para>
/// The <c>Application</c> property returns the automation object supported by the application that contains the WebBrowser
/// control, if that object is accessible. Otherwise, this property returns the WebBrowser control's automation object.
/// </para>
/// <para>
/// Use this property with the <c>Set</c> and <c>CreateObject</c> commands or with the <c>GetObject</c> command to create and
/// manipulate an instance of the Windows Internet Explorer application.
/// </para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-application
[DispId(0x60020000)]
new object Application { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020000)] get; }
/// <summary>
/// <para>Retrieves an object that represents the parent of the current object.</para>
/// <para>This property is read-only.</para>
/// </summary>
/// <remarks>This property is implemented and accessed through the <c>Shell.Parent</c> property.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-parent
[DispId(0x60020001)]
new object Parent { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020001)] get; }
/// <summary>Creates and returns a <c>Folder</c> object for the specified folder.</summary>
/// <param name="vDir">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// The folder for which to create the <c>Folder</c> object. This can be a string that specifies the path of the folder or one of
/// the <c>ShellSpecialFolderConstants</c> values. Note that the constant names found in <c>ShellSpecialFolderConstants</c> are
/// available in Visual Basic, but not in VBScript or JScript. In those cases, the numeric values must be used in their place.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c><c>Folder</c>**</c></para>
/// <para>
/// Object reference to the <c>Folder</c> object for the specified folder. If the folder is not successfully created, this value
/// returns <c>null</c>.
/// </para>
/// <para>VB</para>
/// <para>Type: <c><c>Folder</c>**</c></para>
/// <para>
/// Object reference to the <c>Folder</c> object for the specified folder. If the folder is not successfully created, this value
/// returns <c>null</c>.
/// </para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.NameSpace</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-namespace
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020002)]
new Folder NameSpace([In, MarshalAs(UnmanagedType.Struct)] object vDir);
/// <summary>
/// Creates a dialog box that enables the user to select a folder and then returns the selected folder's <c>Folder</c> object.
/// </summary>
/// <param name="Hwnd">
/// <para>Type: <c>Integer</c></para>
/// <para>The handle to the parent window of the dialog box. This value can be zero.</para>
/// </param>
/// <param name="Title">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> value that represents the title displayed inside the <c>Browse</c> dialog box.</para>
/// </param>
/// <param name="Options">
/// <para>Type: <c>Integer</c></para>
/// <para>
/// An <c>Integer</c> value that contains the options for the method. This can be zero or a combination of the values listed
/// under the <c>ulFlags</c> member of the <c>BROWSEINFO</c> structure.
/// </para>
/// </param>
/// <param name="RootFolder">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// The root folder to use in the dialog box. The user cannot browse higher in the tree than this folder. If this value is not
/// specified, the root folder used in the dialog box is the desktop. This value can be a string that specifies the path of the
/// folder or one of the <c>ShellSpecialFolderConstants</c> values. Note that the constant names found in
/// <c>ShellSpecialFolderConstants</c> are available in Visual Basic, but not in VBScript or JScript. In those cases, the numeric
/// values must be used in their place.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>FOLDER**</c></para>
/// <para>An object reference to the selected folder's <c>Folder</c> object.</para>
/// <para>VB</para>
/// <para>Type: <c>FOLDER**</c></para>
/// <para>An object reference to the selected folder's <c>Folder</c> object.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.BrowseForFolder</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-browseforfolder
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020003)]
new Folder BrowseForFolder([In] int Hwnd, [In, MarshalAs(UnmanagedType.BStr)] string Title, [In] int Options, [In, Optional, MarshalAs(UnmanagedType.Struct)] object RootFolder);
/// <summary>
/// Creates and returns a <c>ShellWindows</c> object. This object represents a collection of all of the open windows that belong
/// to the Shell.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c><c>IDispatch</c>**</c></para>
/// <para>An object reference to the <c>ShellWindows</c> object.</para>
/// <para>VB</para>
/// <para>Type: <c><c>IDispatch</c>**</c></para>
/// <para>An object reference to the <c>ShellWindows</c> object.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.Windows</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-windows
[return: MarshalAs(UnmanagedType.IDispatch)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020004)]
new object Windows();
/// <summary>Opens the specified folder.</summary>
/// <param name="vDir">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// A string that specifies the path of the folder or one of the <c>ShellSpecialFolderConstants</c> values. Note that the
/// constant names found in <c>ShellSpecialFolderConstants</c> are available in Visual Basic, but not in VBScript or JScript. In
/// those cases, the numeric values must be used in their place.
/// </para>
/// <para>
/// If vDir is set to one of the <c>ShellSpecialFolderConstants</c> and the special folder does not exist, this function will
/// create the folder.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.Open</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-open
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020005)]
new void Open([In, MarshalAs(UnmanagedType.Struct)] object vDir);
/// <summary>Opens a specified folder in a Windows Explorer window.</summary>
/// <param name="vDir">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// The folder to be displayed. This can be a string that specifies the path of the folder or one of the
/// <c>ShellSpecialFolderConstants</c> values. Note that the constant names found in <c>ShellSpecialFolderConstants</c> are
/// available in Visual Basic, but not in VBScript or JScript. In those cases, the numeric values must be used in their place.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.Explore</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-explore
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020006)]
new void Explore([In, MarshalAs(UnmanagedType.Struct)] object vDir);
/// <summary>
/// Minimizes all of the windows on the desktop. This method has the same effect as right-clicking the taskbar and selecting
/// <c>Minimize All Windows</c> on older systems or clicking the <c>Show Desktop</c> icon on the taskbar.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.MinimizeAll</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-minimizeall
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020007)]
new void MinimizeAll();
/// <summary>
/// Restores all desktop windows to the state they were in before the last <c>MinimizeAll</c> command. This method has the same
/// effect as right-clicking the taskbar and selecting <c>Undo Minimize All Windows</c> (on older systems) or a second clicking
/// of the <c>Show Desktop</c> icon in the taskbar.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.UndoMinimizeAll</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-undominimizeall
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020008)]
new void UndoMinimizeALL();
/// <summary>Displays the <c>Run</c> dialog to the user.</summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.FileRun</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-filerun
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020009)]
new void FileRun();
/// <summary>
/// Cascades all of the windows on the desktop. This method has the same effect as right-clicking the taskbar and selecting
/// <c>Cascade windows</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.CascadeWindows</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-cascadewindows
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000a)]
new void CascadeWindows();
/// <summary>
/// Tiles all of the windows on the desktop vertically. This method has the same effect as right-clicking the taskbar and
/// selecting <c>Show windows side by side</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.TileVertically</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-tilevertically
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000b)]
new void TileVertically();
/// <summary>
/// Tiles all of the windows on the desktop horizontally. This method has the same effect as right-clicking the taskbar and
/// selecting <c>Show windows stacked</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.TileHorizontally</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-tilehorizontally
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000c)]
new void TileHorizontally();
/// <summary>
/// Displays the <c>Shut Down Windows</c> dialog box. This is the same as clicking the <c>Start</c> menu and selecting <c>Shut Down</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.ShutdownWindows</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-shutdownwindows
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000d)]
new void ShutdownWindows();
/// <summary>This method is not implemented.</summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-suspend
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000e)]
new void Suspend();
/// <summary>
/// Ejects the computer from its docking station. This is the same as clicking the <c>Start</c> menu and selecting <c>Eject
/// PC</c>, if your computer supports this command.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.EjectPC</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-ejectpc
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000f)]
new void EjectPC();
/// <summary>
/// Displays the <c>Date and Time</c> dialog box. This method has the same effect as right-clicking the clock in the taskbar
/// status area and selecting <c>Adjust date/time</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.SetTime</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-settime
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020010)]
new void SetTime();
/// <summary>
/// Displays the <c>Taskbar and Start Menu Properties</c> dialog box. This method has the same effect as right-clicking the
/// taskbar and selecting <c>Properties</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.TrayProperties</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-trayproperties
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020011)]
new void TrayProperties();
/// <summary>
/// Displays the Windows Help and Support window. This method has the same effect as clicking the <c>Start</c> menu and selecting
/// <c>Help and Support</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.Help</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-help
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020012)]
new void Help();
/// <summary>
/// Displays the <c>Find: All Files</c> dialog box. This is the same as clicking the <c>Start</c> menu and then selecting <c>Search</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.FindFiles</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-findfiles
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020013)]
new void FindFiles();
/// <summary>
/// Displays the <c>Search Results: Computers</c> dialog box. The dialog box shows the result of the search for a specified computer.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.FindComputer</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-findcomputer
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020014)]
new void FindComputer();
/// <summary>Refreshes the contents of the <c>Start</c> menu. Used only with systems preceding Windows XP.</summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.TrayProperties</c> method.</para>
/// <para>
/// The functionality that <c>RefreshMenu</c> provides is handled automatically under Windows XP or later. Do not call this
/// method on Windows XP or later.
/// </para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-refreshmenu
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020015)]
new void RefreshMenu();
/// <summary>
/// Runs the specified Control Panel application. If the application is already open, it will activate the running instance.
/// </summary>
/// <param name="bstrDir">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>The Control Panel application's file name.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.ControlPanelItem</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-controlpanelitem
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020016)]
new void ControlPanelItem([In, MarshalAs(UnmanagedType.BStr)] string bstrDir);
/// <summary>Retrieves a group's restriction setting from the registry.</summary>
/// <param name="sGroup">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>
/// A <c>String</c> that contains the group name. This value is the name of a registry subkey under which to check for the restriction.
/// </para>
/// </param>
/// <param name="sRestriction">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the restriction whose value is to be retrieved.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Integer*</c></para>
/// <para>The value of the restriction. If the specified restriction is not found, the return value is 0.</para>
/// <para>VB</para>
/// <para>Type: <c>Integer*</c></para>
/// <para>The value of the restriction. If the specified restriction is not found, the return value is 0.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.IsRestricted</c> method.</para>
/// <para><c>IsRestricted</c> first looks for a subkey name that matches sGroup under the following key.</para>
/// <para>
/// Restrictions are declared as values of the individual policy subkeys. If the restriction named in sRestriction is found in
/// the subkey named in sGroup, <c>IsRestricted</c> returns the restriction's current value. If the restriction is not found
/// under <c>HKEY_LOCAL_MACHINE</c>, the same subkey is checked under <c>HKEY_CURRENT_USER</c>.
/// </para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-isrestricted
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030000)]
new int IsRestricted([In, MarshalAs(UnmanagedType.BStr)] string sGroup, [In, MarshalAs(UnmanagedType.BStr)] string sRestriction);
/// <summary>Performs a specified operation on a specified file.</summary>
/// <param name="sFile">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>
/// A <c>String</c> that contains the name of the file on which <c>ShellExecute</c> will perform the action specified by vOperation.
/// </para>
/// </param>
/// <param name="vArguments">
/// <para>Type: <c>Variant</c></para>
/// <para>A string that contains parameter values for the operation.</para>
/// </param>
/// <param name="vDirectory">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// The fully qualified path of the directory that contains the file specified by sFile. If this parameter is not specified, the
/// current working directory is used.
/// </para>
/// </param>
/// <param name="vOperation">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// The operation to be performed. This value is set to one of the verb strings that is supported by the file. For a discussion
/// of verbs, see the Remarks section. If this parameter is not specified, the default operation is performed.
/// </para>
/// </param>
/// <param name="vShow">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// A recommendation as to how the application window should be displayed initially. The application can ignore this
/// recommendation. This parameter can be one of the following values. If this parameter is not specified, the application uses
/// its default value.
/// </para>
/// <list type="table">
/// <listheader>
/// <term>Value</term>
/// <term>Meaning</term>
/// </listheader>
/// <item>
/// <term>0</term>
/// <term>Open the application with a hidden window.</term>
/// </item>
/// <item>
/// <term>1</term>
/// <term>
/// Open the application with a normal window. If the window is minimized or maximized, the system restores it to its original
/// size and position.
/// </term>
/// </item>
/// <item>
/// <term>2</term>
/// <term>Open the application with a minimized window.</term>
/// </item>
/// <item>
/// <term>3</term>
/// <term>Open the application with a maximized window.</term>
/// </item>
/// <item>
/// <term>4</term>
/// <term>Open the application with its window at its most recent size and position. The active window remains active.</term>
/// </item>
/// <item>
/// <term>5</term>
/// <term>Open the application with its window at its current size and position.</term>
/// </item>
/// <item>
/// <term>7</term>
/// <term>Open the application with a minimized window. The active window remains active.</term>
/// </item>
/// <item>
/// <term>10</term>
/// <term>Open the application with its window in the default state specified by the application.</term>
/// </item>
/// </list>
/// </param>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.ShellExecute</c> method.</para>
/// <para>
/// This method is equivalent to launching one of the commands associated with a file's shortcut menu. Each command is
/// represented by a verb string. The set of supported verbs varies from file to file. The most commonly supported verb is
/// "open", which is also usually the default verb. Other verbs might be supported by only certain types of files. For further
/// discussion of Shell verbs, see Launching Applications or Extending Shortcut Menus.
/// </para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-shellexecute
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030001)]
new void ShellExecute([In, MarshalAs(UnmanagedType.BStr)] string sFile, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vArguments, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vDirectory, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vOperation, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vShow);
/// <summary>Displays the <c>Find Printer</c> dialog box.</summary>
/// <param name="Name">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the printer name.</para>
/// </param>
/// <param name="location">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the printer location.</para>
/// </param>
/// <param name="model">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the printer model.</para>
/// </param>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.FindPrinter</c> method.</para>
/// <para>
/// If you assign strings to one or more of the optional parameters, they are displayed as default values in the associated edit
/// control when the <c>Find Printer</c> dialog box is displayed. The user can either accept or override these values. If no
/// value is assigned to a parameter, the associated edit box is empty and the user must enter a value.
/// </para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-findprinter
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030002)]
new void FindPrinter([In, Optional, MarshalAs(UnmanagedType.BStr)] string Name, [In, Optional, MarshalAs(UnmanagedType.BStr)] string location, [In, Optional, MarshalAs(UnmanagedType.BStr)] string model);
/// <summary>Retrieves system information.</summary>
/// <param name="sName">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that specifies the system information that is being requested.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant</c></para>
/// <para>
/// Returns the value of the requested system information. The return type depends on which system information is requested. See
/// the Remarks section for details.
/// </para>
/// <para>VB</para>
/// <para>Type: <c>Variant</c></para>
/// <para>
/// Returns the value of the requested system information. The return type depends on which system information is requested. See
/// the Remarks section for details.
/// </para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.GetSystemInformation</c> method.</para>
/// <para>
/// This method can be used to request many system information values. The following table gives the sName value that is used to
/// request the information and the associated type of the returned value.
/// </para>
/// <para>sName</para>
/// <para>Return type</para>
/// <para>Description</para>
/// <para>DirectoryServiceAvailable</para>
/// <para><c>Boolean</c></para>
/// <para>Set to <c>true</c> if the directory service is available; otherwise, <c>false</c>.</para>
/// <para>DoubleClickTime</para>
/// <para><c>Integer</c></para>
/// <para>The double-click time, in milliseconds.</para>
/// <para>ProcessorLevel</para>
/// <para><c>Integer</c></para>
/// <para>
/// <c>Windows Vista and later</c>. The processor level. Returns 3, 4, or 5, for x386, x486, and Pentium-level processors, respectively.
/// </para>
/// <para>ProcessorSpeed</para>
/// <para><c>Integer</c></para>
/// <para>The processor speed, in megahertz (MHz).</para>
/// <para>ProcessorArchitecture</para>
/// <para><c>Integer</c></para>
/// <para>
/// The processor architecture. For details, see the discussion of the <c>wProcessorArchitecture</c> member of the
/// <c>SYSTEM_INFO</c> structure.
/// </para>
/// <para>PhysicalMemoryInstalled</para>
/// <para><c>Integer</c></para>
/// <para>The amount of physical memory installed, in bytes.</para>
/// <para>The following are valid only on Windows XP.</para>
/// <para>IsOS_Professional</para>
/// <para><c>Boolean</c></para>
/// <para>Set to <c>true</c> if the operating system is Windows XP Professional Edition; otherwise, <c>false</c>.</para>
/// <para>IsOS_Personal</para>
/// <para><c>Boolean</c></para>
/// <para>Set to <c>true</c> if the operating system is Windows XP Home Edition; otherwise, <c>false</c>.</para>
/// <para>The following is valid only on Windows XP and later.</para>
/// <para>IsOS_DomainMember</para>
/// <para><c>Boolean</c></para>
/// <para>Set to <c>true</c> if the computer is a member of a domain; otherwise, <c>false</c>.</para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-getsysteminformation
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030003)]
new object GetSystemInformation([In, MarshalAs(UnmanagedType.BStr)] string sName);
/// <summary>Starts a named service.</summary>
/// <param name="sServiceName">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the name of the service.</para>
/// </param>
/// <param name="vPersistent">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// Set to <c>true</c> to have the service started automatically by the service control manager during system startup. Set to
/// <c>false</c> to leave the service configuration unchanged.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// <para>VB</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.ServiceStart</c> method.</para>
/// <para>
/// The method returns <c>false</c> if the service has already been started. Before calling this method, you can call
/// <c>Shell.IsServiceRunning</c> to ascertain the status of the service.
/// </para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-servicestart
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030004)]
new object ServiceStart([In, MarshalAs(UnmanagedType.BStr)] string sServiceName, [In, MarshalAs(UnmanagedType.Struct)] object vPersistent);
/// <summary>Stops a named service.</summary>
/// <param name="sServiceName">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the name of the service.</para>
/// </param>
/// <param name="vPersistent">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// Set to <c>true</c> to have the service started by the service control manager when <c>ServiceStart</c> is called. To leave
/// the service configuration unchanged, set vPersistent to <c>false</c>.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// <para>VB</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.ServiceStop</c> method.</para>
/// <para>
/// The method returns <c>false</c> if the service has already been stopped. Before calling this method, you can call
/// <c>Shell.IsServiceRunning</c> to ascertain the status of the service.
/// </para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-servicestop
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030005)]
new object ServiceStop([In, MarshalAs(UnmanagedType.BStr)] string sServiceName, [In, MarshalAs(UnmanagedType.Struct)] object vPersistent);
/// <summary>Returns a value that indicates whether a particular service is running.</summary>
/// <param name="sServiceName">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the name of the service.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if the service specified by sServiceName is running; otherwise, <c>false</c>.</para>
/// <para>VB</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if the service specified by sServiceName is running; otherwise, <c>false</c>.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.IsServiceRunning</c> method.</para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-isservicerunning
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030006)]
new object IsServiceRunning([In, MarshalAs(UnmanagedType.BStr)] string sServiceName);
/// <summary>Determines if the current user can start and stop the named service.</summary>
/// <param name="sServiceName">
/// <para>Type: <c>String</c></para>
/// <para>A <c>String</c> that contains the name of the service.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if the user can start and stop the service; otherwise, <c>false</c>.</para>
/// <para>VB</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if the user can start and stop the service; otherwise, <c>false</c>.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.CanStartStopService</c> method.</para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-canstartstopservice
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030007)]
new object CanStartStopService([In, MarshalAs(UnmanagedType.BStr)] string sServiceName);
/// <summary>Displays a browser bar.</summary>
/// <param name="sCLSID">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>
/// A <c>String</c> that contains the string form of the CLSID of the browser bar to be displayed. The object must be registered
/// as an Explorer Bar object with a CATID_InfoBand component category. For further information, see Creating Custom Explorer
/// Bars, Tool Bands, and Desk Bands.
/// </para>
/// </param>
/// <param name="vShow">
/// <para>Type: <c>Variant</c></para>
/// <para>Set to <c>true</c> to show the browser bar or <c>false</c> to hide it.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// <para>VB</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.ShowBrowserBar</c> method.</para>
/// <para>
/// You can display one of the standard Explorer Bars by setting the sCLSID parameter to the CLSID of that Explorer Bar. The
/// standard Explorer Bars and their CLSID strings are as follows:
/// </para>
/// <list type="table">
/// <listheader>
/// <term>Explorer Bar</term>
/// <term>CLSID string</term>
/// </listheader>
/// <item>
/// <term>Favorites</term>
/// <term>{EFA24E61-B078-11d0-89E4-00C04FC9E26E}</term>
/// </item>
/// <item>
/// <term>Folders</term>
/// <term>{EFA24E64-B078-11d0-89E4-00C04FC9E26E}</term>
/// </item>
/// <item>
/// <term>History</term>
/// <term>{EFA24E62-B078-11d0-89E4-00C04FC9E26E}</term>
/// </item>
/// <item>
/// <term>Search</term>
/// <term>{30D02401-6A81-11d0-8274-00C04FD5AE38}</term>
/// </item>
/// </list>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-showbrowserbar
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030008)]
new object ShowBrowserBar([In, MarshalAs(UnmanagedType.BStr)] string sCLSID, [In, MarshalAs(UnmanagedType.Struct)] object vShow);
/// <summary>Adds a file to the most recently used (MRU) list.</summary>
/// <param name="varFile">
/// <para>Type: <c>Variant</c></para>
/// <para>A <c>String</c> that contains the path of the file to add to the list of recently used documents.</para>
/// <para><c>Windows Vista</c>: Set this parameter to <c>null</c> to clear the recent documents folder.</para>
/// </param>
/// <param name="bstrCategory">A <c>String</c> that contains the name of the category in which to place the file.</param>
// https://docs.microsoft.com/en-us/windows/win32/shell/shell-addtorecent
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60040000)]
new void AddToRecent([In, MarshalAs(UnmanagedType.Struct)] object varFile, [In, Optional, MarshalAs(UnmanagedType.BStr)] string bstrCategory);
/// <summary>Displays the <c>Windows Security</c> dialog box.</summary>
/// <remarks>
/// This method displays the dialog box shown after pressing CTRL+ALT+DELETE or using the security option on the <c>Start</c> menu.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch4-windowssecurity
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60050000)]
void WindowsSecurity();
/// <summary>Displays or hides the desktop.</summary>
/// <remarks>
/// This method has the same effect as the <c>Show Desktop</c> button on the taskbar. It either hides all open windows to show
/// the desktop or it hides the desktop by showing all open windows. The <c>ToggleDesktop</c> method does not display a user
/// interface, it just invokes the toggle action.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch4-toggledesktop
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60050001)]
void ToggleDesktop();
/// <summary>Gets the value for a specified Windows Internet Explorer policy.</summary>
/// <param name="bstrPolicyName">A <c>String</c> that specifies the name of the policy.</param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>The value associated with the specified policy name.</para>
/// <para>VB</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>The value associated with the specified policy name.</para>
/// </returns>
/// <remarks>
/// <para>Network Administrators can control and manage the computing environment of their users by setting policies.</para>
/// <para>
/// The specified value name must be within the <c>HKEY_CURRENT_USER</c>\ <c>Software</c>\ <c>Microsoft</c>\ <c>Windows</c>\
/// <c>CurrentVersion</c>\ <c>Policies</c>\ <c>Explorer</c> subkey. If the value name does not exist then the method returns <c>null</c>.
/// </para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch4-explorerpolicy
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60050002)]
object ExplorerPolicy([In, MarshalAs(UnmanagedType.BStr)] string bstrPolicyName);
/// <summary>Retrieves a global Shell setting.</summary>
/// <param name="lSetting">
/// A value that specifies the current Shell setting to retrieve. Only one setting can be retrieved in each call. The following
/// values are recognized by this method.
/// </param>
/// <returns>Set to <c>true</c> if the setting exists; otherwise, <c>false</c>.</returns>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch4-getsetting
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60050003)]
bool GetSetting([In] SSF lSetting);
}
/// <summary>
/// Extends the <c>IShellDispatch4</c> object. In addition to the properties and methods supported by <c>IShellDispatch4</c>,
/// <c>IShellDispatch5</c> adds a method that displays open windows in a 3D stack.
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch5
[PInvokeData("shldisp.h", MSDNShortId = "9170340a-0f11-4ec9-877d-fb7fef9888b2")]
[ComImport, Guid("866738B9-6CF2-4DE8-8767-F794EBE74F4E"), CoClass(typeof(Shell))]
public interface IShellDispatch5 : IShellDispatch4
{
/// <summary>
/// <para>Contains an object that represents an application.</para>
/// <para>This property is read-only.</para>
/// </summary>
/// <remarks>
/// <para>This property is implemented and accessed through the <c>Shell.EjectPC</c> property.</para>
/// <para>
/// The <c>Application</c> property returns the automation object supported by the application that contains the WebBrowser
/// control, if that object is accessible. Otherwise, this property returns the WebBrowser control's automation object.
/// </para>
/// <para>
/// Use this property with the <c>Set</c> and <c>CreateObject</c> commands or with the <c>GetObject</c> command to create and
/// manipulate an instance of the Windows Internet Explorer application.
/// </para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-application
[DispId(0x60020000)]
new object Application { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020000)] get; }
/// <summary>
/// <para>Retrieves an object that represents the parent of the current object.</para>
/// <para>This property is read-only.</para>
/// </summary>
/// <remarks>This property is implemented and accessed through the <c>Shell.Parent</c> property.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-parent
[DispId(0x60020001)]
new object Parent { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020001)] get; }
/// <summary>Creates and returns a <c>Folder</c> object for the specified folder.</summary>
/// <param name="vDir">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// The folder for which to create the <c>Folder</c> object. This can be a string that specifies the path of the folder or one of
/// the <c>ShellSpecialFolderConstants</c> values. Note that the constant names found in <c>ShellSpecialFolderConstants</c> are
/// available in Visual Basic, but not in VBScript or JScript. In those cases, the numeric values must be used in their place.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c><c>Folder</c>**</c></para>
/// <para>
/// Object reference to the <c>Folder</c> object for the specified folder. If the folder is not successfully created, this value
/// returns <c>null</c>.
/// </para>
/// <para>VB</para>
/// <para>Type: <c><c>Folder</c>**</c></para>
/// <para>
/// Object reference to the <c>Folder</c> object for the specified folder. If the folder is not successfully created, this value
/// returns <c>null</c>.
/// </para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.NameSpace</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-namespace
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020002)]
new Folder NameSpace([In, MarshalAs(UnmanagedType.Struct)] object vDir);
/// <summary>
/// Creates a dialog box that enables the user to select a folder and then returns the selected folder's <c>Folder</c> object.
/// </summary>
/// <param name="Hwnd">
/// <para>Type: <c>Integer</c></para>
/// <para>The handle to the parent window of the dialog box. This value can be zero.</para>
/// </param>
/// <param name="Title">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> value that represents the title displayed inside the <c>Browse</c> dialog box.</para>
/// </param>
/// <param name="Options">
/// <para>Type: <c>Integer</c></para>
/// <para>
/// An <c>Integer</c> value that contains the options for the method. This can be zero or a combination of the values listed
/// under the <c>ulFlags</c> member of the <c>BROWSEINFO</c> structure.
/// </para>
/// </param>
/// <param name="RootFolder">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// The root folder to use in the dialog box. The user cannot browse higher in the tree than this folder. If this value is not
/// specified, the root folder used in the dialog box is the desktop. This value can be a string that specifies the path of the
/// folder or one of the <c>ShellSpecialFolderConstants</c> values. Note that the constant names found in
/// <c>ShellSpecialFolderConstants</c> are available in Visual Basic, but not in VBScript or JScript. In those cases, the numeric
/// values must be used in their place.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>FOLDER**</c></para>
/// <para>An object reference to the selected folder's <c>Folder</c> object.</para>
/// <para>VB</para>
/// <para>Type: <c>FOLDER**</c></para>
/// <para>An object reference to the selected folder's <c>Folder</c> object.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.BrowseForFolder</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-browseforfolder
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020003)]
new Folder BrowseForFolder([In] int Hwnd, [In, MarshalAs(UnmanagedType.BStr)] string Title, [In] int Options, [In, Optional, MarshalAs(UnmanagedType.Struct)] object RootFolder);
/// <summary>
/// Creates and returns a <c>ShellWindows</c> object. This object represents a collection of all of the open windows that belong
/// to the Shell.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c><c>IDispatch</c>**</c></para>
/// <para>An object reference to the <c>ShellWindows</c> object.</para>
/// <para>VB</para>
/// <para>Type: <c><c>IDispatch</c>**</c></para>
/// <para>An object reference to the <c>ShellWindows</c> object.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.Windows</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-windows
[return: MarshalAs(UnmanagedType.IDispatch)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020004)]
new object Windows();
/// <summary>Opens the specified folder.</summary>
/// <param name="vDir">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// A string that specifies the path of the folder or one of the <c>ShellSpecialFolderConstants</c> values. Note that the
/// constant names found in <c>ShellSpecialFolderConstants</c> are available in Visual Basic, but not in VBScript or JScript. In
/// those cases, the numeric values must be used in their place.
/// </para>
/// <para>
/// If vDir is set to one of the <c>ShellSpecialFolderConstants</c> and the special folder does not exist, this function will
/// create the folder.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.Open</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-open
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020005)]
new void Open([In, MarshalAs(UnmanagedType.Struct)] object vDir);
/// <summary>Opens a specified folder in a Windows Explorer window.</summary>
/// <param name="vDir">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// The folder to be displayed. This can be a string that specifies the path of the folder or one of the
/// <c>ShellSpecialFolderConstants</c> values. Note that the constant names found in <c>ShellSpecialFolderConstants</c> are
/// available in Visual Basic, but not in VBScript or JScript. In those cases, the numeric values must be used in their place.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.Explore</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-explore
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020006)]
new void Explore([In, MarshalAs(UnmanagedType.Struct)] object vDir);
/// <summary>
/// Minimizes all of the windows on the desktop. This method has the same effect as right-clicking the taskbar and selecting
/// <c>Minimize All Windows</c> on older systems or clicking the <c>Show Desktop</c> icon on the taskbar.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.MinimizeAll</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-minimizeall
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020007)]
new void MinimizeAll();
/// <summary>
/// Restores all desktop windows to the state they were in before the last <c>MinimizeAll</c> command. This method has the same
/// effect as right-clicking the taskbar and selecting <c>Undo Minimize All Windows</c> (on older systems) or a second clicking
/// of the <c>Show Desktop</c> icon in the taskbar.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.UndoMinimizeAll</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-undominimizeall
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020008)]
new void UndoMinimizeALL();
/// <summary>Displays the <c>Run</c> dialog to the user.</summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.FileRun</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-filerun
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020009)]
new void FileRun();
/// <summary>
/// Cascades all of the windows on the desktop. This method has the same effect as right-clicking the taskbar and selecting
/// <c>Cascade windows</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.CascadeWindows</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-cascadewindows
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000a)]
new void CascadeWindows();
/// <summary>
/// Tiles all of the windows on the desktop vertically. This method has the same effect as right-clicking the taskbar and
/// selecting <c>Show windows side by side</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.TileVertically</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-tilevertically
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000b)]
new void TileVertically();
/// <summary>
/// Tiles all of the windows on the desktop horizontally. This method has the same effect as right-clicking the taskbar and
/// selecting <c>Show windows stacked</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.TileHorizontally</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-tilehorizontally
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000c)]
new void TileHorizontally();
/// <summary>
/// Displays the <c>Shut Down Windows</c> dialog box. This is the same as clicking the <c>Start</c> menu and selecting <c>Shut Down</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.ShutdownWindows</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-shutdownwindows
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000d)]
new void ShutdownWindows();
/// <summary>This method is not implemented.</summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-suspend
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000e)]
new void Suspend();
/// <summary>
/// Ejects the computer from its docking station. This is the same as clicking the <c>Start</c> menu and selecting <c>Eject
/// PC</c>, if your computer supports this command.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.EjectPC</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-ejectpc
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000f)]
new void EjectPC();
/// <summary>
/// Displays the <c>Date and Time</c> dialog box. This method has the same effect as right-clicking the clock in the taskbar
/// status area and selecting <c>Adjust date/time</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.SetTime</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-settime
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020010)]
new void SetTime();
/// <summary>
/// Displays the <c>Taskbar and Start Menu Properties</c> dialog box. This method has the same effect as right-clicking the
/// taskbar and selecting <c>Properties</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.TrayProperties</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-trayproperties
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020011)]
new void TrayProperties();
/// <summary>
/// Displays the Windows Help and Support window. This method has the same effect as clicking the <c>Start</c> menu and selecting
/// <c>Help and Support</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.Help</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-help
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020012)]
new void Help();
/// <summary>
/// Displays the <c>Find: All Files</c> dialog box. This is the same as clicking the <c>Start</c> menu and then selecting <c>Search</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.FindFiles</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-findfiles
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020013)]
new void FindFiles();
/// <summary>
/// Displays the <c>Search Results: Computers</c> dialog box. The dialog box shows the result of the search for a specified computer.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.FindComputer</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-findcomputer
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020014)]
new void FindComputer();
/// <summary>Refreshes the contents of the <c>Start</c> menu. Used only with systems preceding Windows XP.</summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.TrayProperties</c> method.</para>
/// <para>
/// The functionality that <c>RefreshMenu</c> provides is handled automatically under Windows XP or later. Do not call this
/// method on Windows XP or later.
/// </para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-refreshmenu
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020015)]
new void RefreshMenu();
/// <summary>
/// Runs the specified Control Panel application. If the application is already open, it will activate the running instance.
/// </summary>
/// <param name="bstrDir">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>The Control Panel application's file name.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.ControlPanelItem</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-controlpanelitem
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020016)]
new void ControlPanelItem([In, MarshalAs(UnmanagedType.BStr)] string bstrDir);
/// <summary>Retrieves a group's restriction setting from the registry.</summary>
/// <param name="sGroup">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>
/// A <c>String</c> that contains the group name. This value is the name of a registry subkey under which to check for the restriction.
/// </para>
/// </param>
/// <param name="sRestriction">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the restriction whose value is to be retrieved.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Integer*</c></para>
/// <para>The value of the restriction. If the specified restriction is not found, the return value is 0.</para>
/// <para>VB</para>
/// <para>Type: <c>Integer*</c></para>
/// <para>The value of the restriction. If the specified restriction is not found, the return value is 0.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.IsRestricted</c> method.</para>
/// <para><c>IsRestricted</c> first looks for a subkey name that matches sGroup under the following key.</para>
/// <para>
/// Restrictions are declared as values of the individual policy subkeys. If the restriction named in sRestriction is found in
/// the subkey named in sGroup, <c>IsRestricted</c> returns the restriction's current value. If the restriction is not found
/// under <c>HKEY_LOCAL_MACHINE</c>, the same subkey is checked under <c>HKEY_CURRENT_USER</c>.
/// </para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-isrestricted
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030000)]
new int IsRestricted([In, MarshalAs(UnmanagedType.BStr)] string sGroup, [In, MarshalAs(UnmanagedType.BStr)] string sRestriction);
/// <summary>Performs a specified operation on a specified file.</summary>
/// <param name="sFile">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>
/// A <c>String</c> that contains the name of the file on which <c>ShellExecute</c> will perform the action specified by vOperation.
/// </para>
/// </param>
/// <param name="vArguments">
/// <para>Type: <c>Variant</c></para>
/// <para>A string that contains parameter values for the operation.</para>
/// </param>
/// <param name="vDirectory">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// The fully qualified path of the directory that contains the file specified by sFile. If this parameter is not specified, the
/// current working directory is used.
/// </para>
/// </param>
/// <param name="vOperation">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// The operation to be performed. This value is set to one of the verb strings that is supported by the file. For a discussion
/// of verbs, see the Remarks section. If this parameter is not specified, the default operation is performed.
/// </para>
/// </param>
/// <param name="vShow">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// A recommendation as to how the application window should be displayed initially. The application can ignore this
/// recommendation. This parameter can be one of the following values. If this parameter is not specified, the application uses
/// its default value.
/// </para>
/// <list type="table">
/// <listheader>
/// <term>Value</term>
/// <term>Meaning</term>
/// </listheader>
/// <item>
/// <term>0</term>
/// <term>Open the application with a hidden window.</term>
/// </item>
/// <item>
/// <term>1</term>
/// <term>
/// Open the application with a normal window. If the window is minimized or maximized, the system restores it to its original
/// size and position.
/// </term>
/// </item>
/// <item>
/// <term>2</term>
/// <term>Open the application with a minimized window.</term>
/// </item>
/// <item>
/// <term>3</term>
/// <term>Open the application with a maximized window.</term>
/// </item>
/// <item>
/// <term>4</term>
/// <term>Open the application with its window at its most recent size and position. The active window remains active.</term>
/// </item>
/// <item>
/// <term>5</term>
/// <term>Open the application with its window at its current size and position.</term>
/// </item>
/// <item>
/// <term>7</term>
/// <term>Open the application with a minimized window. The active window remains active.</term>
/// </item>
/// <item>
/// <term>10</term>
/// <term>Open the application with its window in the default state specified by the application.</term>
/// </item>
/// </list>
/// </param>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.ShellExecute</c> method.</para>
/// <para>
/// This method is equivalent to launching one of the commands associated with a file's shortcut menu. Each command is
/// represented by a verb string. The set of supported verbs varies from file to file. The most commonly supported verb is
/// "open", which is also usually the default verb. Other verbs might be supported by only certain types of files. For further
/// discussion of Shell verbs, see Launching Applications or Extending Shortcut Menus.
/// </para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-shellexecute
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030001)]
new void ShellExecute([In, MarshalAs(UnmanagedType.BStr)] string sFile, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vArguments, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vDirectory, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vOperation, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vShow);
/// <summary>Displays the <c>Find Printer</c> dialog box.</summary>
/// <param name="Name">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the printer name.</para>
/// </param>
/// <param name="location">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the printer location.</para>
/// </param>
/// <param name="model">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the printer model.</para>
/// </param>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.FindPrinter</c> method.</para>
/// <para>
/// If you assign strings to one or more of the optional parameters, they are displayed as default values in the associated edit
/// control when the <c>Find Printer</c> dialog box is displayed. The user can either accept or override these values. If no
/// value is assigned to a parameter, the associated edit box is empty and the user must enter a value.
/// </para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-findprinter
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030002)]
new void FindPrinter([In, Optional, MarshalAs(UnmanagedType.BStr)] string Name, [In, Optional, MarshalAs(UnmanagedType.BStr)] string location, [In, Optional, MarshalAs(UnmanagedType.BStr)] string model);
/// <summary>Retrieves system information.</summary>
/// <param name="sName">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that specifies the system information that is being requested.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant</c></para>
/// <para>
/// Returns the value of the requested system information. The return type depends on which system information is requested. See
/// the Remarks section for details.
/// </para>
/// <para>VB</para>
/// <para>Type: <c>Variant</c></para>
/// <para>
/// Returns the value of the requested system information. The return type depends on which system information is requested. See
/// the Remarks section for details.
/// </para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.GetSystemInformation</c> method.</para>
/// <para>
/// This method can be used to request many system information values. The following table gives the sName value that is used to
/// request the information and the associated type of the returned value.
/// </para>
/// <para>sName</para>
/// <para>Return type</para>
/// <para>Description</para>
/// <para>DirectoryServiceAvailable</para>
/// <para><c>Boolean</c></para>
/// <para>Set to <c>true</c> if the directory service is available; otherwise, <c>false</c>.</para>
/// <para>DoubleClickTime</para>
/// <para><c>Integer</c></para>
/// <para>The double-click time, in milliseconds.</para>
/// <para>ProcessorLevel</para>
/// <para><c>Integer</c></para>
/// <para>
/// <c>Windows Vista and later</c>. The processor level. Returns 3, 4, or 5, for x386, x486, and Pentium-level processors, respectively.
/// </para>
/// <para>ProcessorSpeed</para>
/// <para><c>Integer</c></para>
/// <para>The processor speed, in megahertz (MHz).</para>
/// <para>ProcessorArchitecture</para>
/// <para><c>Integer</c></para>
/// <para>
/// The processor architecture. For details, see the discussion of the <c>wProcessorArchitecture</c> member of the
/// <c>SYSTEM_INFO</c> structure.
/// </para>
/// <para>PhysicalMemoryInstalled</para>
/// <para><c>Integer</c></para>
/// <para>The amount of physical memory installed, in bytes.</para>
/// <para>The following are valid only on Windows XP.</para>
/// <para>IsOS_Professional</para>
/// <para><c>Boolean</c></para>
/// <para>Set to <c>true</c> if the operating system is Windows XP Professional Edition; otherwise, <c>false</c>.</para>
/// <para>IsOS_Personal</para>
/// <para><c>Boolean</c></para>
/// <para>Set to <c>true</c> if the operating system is Windows XP Home Edition; otherwise, <c>false</c>.</para>
/// <para>The following is valid only on Windows XP and later.</para>
/// <para>IsOS_DomainMember</para>
/// <para><c>Boolean</c></para>
/// <para>Set to <c>true</c> if the computer is a member of a domain; otherwise, <c>false</c>.</para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-getsysteminformation
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030003)]
new object GetSystemInformation([In, MarshalAs(UnmanagedType.BStr)] string sName);
/// <summary>Starts a named service.</summary>
/// <param name="sServiceName">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the name of the service.</para>
/// </param>
/// <param name="vPersistent">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// Set to <c>true</c> to have the service started automatically by the service control manager during system startup. Set to
/// <c>false</c> to leave the service configuration unchanged.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// <para>VB</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.ServiceStart</c> method.</para>
/// <para>
/// The method returns <c>false</c> if the service has already been started. Before calling this method, you can call
/// <c>Shell.IsServiceRunning</c> to ascertain the status of the service.
/// </para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-servicestart
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030004)]
new object ServiceStart([In, MarshalAs(UnmanagedType.BStr)] string sServiceName, [In, MarshalAs(UnmanagedType.Struct)] object vPersistent);
/// <summary>Stops a named service.</summary>
/// <param name="sServiceName">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the name of the service.</para>
/// </param>
/// <param name="vPersistent">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// Set to <c>true</c> to have the service started by the service control manager when <c>ServiceStart</c> is called. To leave
/// the service configuration unchanged, set vPersistent to <c>false</c>.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// <para>VB</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.ServiceStop</c> method.</para>
/// <para>
/// The method returns <c>false</c> if the service has already been stopped. Before calling this method, you can call
/// <c>Shell.IsServiceRunning</c> to ascertain the status of the service.
/// </para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-servicestop
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030005)]
new object ServiceStop([In, MarshalAs(UnmanagedType.BStr)] string sServiceName, [In, MarshalAs(UnmanagedType.Struct)] object vPersistent);
/// <summary>Returns a value that indicates whether a particular service is running.</summary>
/// <param name="sServiceName">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the name of the service.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if the service specified by sServiceName is running; otherwise, <c>false</c>.</para>
/// <para>VB</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if the service specified by sServiceName is running; otherwise, <c>false</c>.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.IsServiceRunning</c> method.</para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-isservicerunning
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030006)]
new object IsServiceRunning([In, MarshalAs(UnmanagedType.BStr)] string sServiceName);
/// <summary>Determines if the current user can start and stop the named service.</summary>
/// <param name="sServiceName">
/// <para>Type: <c>String</c></para>
/// <para>A <c>String</c> that contains the name of the service.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if the user can start and stop the service; otherwise, <c>false</c>.</para>
/// <para>VB</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if the user can start and stop the service; otherwise, <c>false</c>.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.CanStartStopService</c> method.</para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-canstartstopservice
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030007)]
new object CanStartStopService([In, MarshalAs(UnmanagedType.BStr)] string sServiceName);
/// <summary>Displays a browser bar.</summary>
/// <param name="sCLSID">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>
/// A <c>String</c> that contains the string form of the CLSID of the browser bar to be displayed. The object must be registered
/// as an Explorer Bar object with a CATID_InfoBand component category. For further information, see Creating Custom Explorer
/// Bars, Tool Bands, and Desk Bands.
/// </para>
/// </param>
/// <param name="vShow">
/// <para>Type: <c>Variant</c></para>
/// <para>Set to <c>true</c> to show the browser bar or <c>false</c> to hide it.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// <para>VB</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.ShowBrowserBar</c> method.</para>
/// <para>
/// You can display one of the standard Explorer Bars by setting the sCLSID parameter to the CLSID of that Explorer Bar. The
/// standard Explorer Bars and their CLSID strings are as follows:
/// </para>
/// <list type="table">
/// <listheader>
/// <term>Explorer Bar</term>
/// <term>CLSID string</term>
/// </listheader>
/// <item>
/// <term>Favorites</term>
/// <term>{EFA24E61-B078-11d0-89E4-00C04FC9E26E}</term>
/// </item>
/// <item>
/// <term>Folders</term>
/// <term>{EFA24E64-B078-11d0-89E4-00C04FC9E26E}</term>
/// </item>
/// <item>
/// <term>History</term>
/// <term>{EFA24E62-B078-11d0-89E4-00C04FC9E26E}</term>
/// </item>
/// <item>
/// <term>Search</term>
/// <term>{30D02401-6A81-11d0-8274-00C04FD5AE38}</term>
/// </item>
/// </list>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-showbrowserbar
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030008)]
new object ShowBrowserBar([In, MarshalAs(UnmanagedType.BStr)] string sCLSID, [In, MarshalAs(UnmanagedType.Struct)] object vShow);
/// <summary>Adds a file to the most recently used (MRU) list.</summary>
/// <param name="varFile">
/// <para>Type: <c>Variant</c></para>
/// <para>A <c>String</c> that contains the path of the file to add to the list of recently used documents.</para>
/// <para><c>Windows Vista</c>: Set this parameter to <c>null</c> to clear the recent documents folder.</para>
/// </param>
/// <param name="bstrCategory">A <c>String</c> that contains the name of the category in which to place the file.</param>
// https://docs.microsoft.com/en-us/windows/win32/shell/shell-addtorecent
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60040000)]
new void AddToRecent([In, MarshalAs(UnmanagedType.Struct)] object varFile, [In, Optional, MarshalAs(UnmanagedType.BStr)] string bstrCategory);
/// <summary>Displays the <c>Windows Security</c> dialog box.</summary>
/// <remarks>
/// This method displays the dialog box shown after pressing CTRL+ALT+DELETE or using the security option on the <c>Start</c> menu.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch4-windowssecurity
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60050000)]
new void WindowsSecurity();
/// <summary>Displays or hides the desktop.</summary>
/// <remarks>
/// This method has the same effect as the <c>Show Desktop</c> button on the taskbar. It either hides all open windows to show
/// the desktop or it hides the desktop by showing all open windows. The <c>ToggleDesktop</c> method does not display a user
/// interface, it just invokes the toggle action.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch4-toggledesktop
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60050001)]
new void ToggleDesktop();
/// <summary>Gets the value for a specified Windows Internet Explorer policy.</summary>
/// <param name="bstrPolicyName">A <c>String</c> that specifies the name of the policy.</param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>The value associated with the specified policy name.</para>
/// <para>VB</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>The value associated with the specified policy name.</para>
/// </returns>
/// <remarks>
/// <para>Network Administrators can control and manage the computing environment of their users by setting policies.</para>
/// <para>
/// The specified value name must be within the <c>HKEY_CURRENT_USER</c>\ <c>Software</c>\ <c>Microsoft</c>\ <c>Windows</c>\
/// <c>CurrentVersion</c>\ <c>Policies</c>\ <c>Explorer</c> subkey. If the value name does not exist then the method returns <c>null</c>.
/// </para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch4-explorerpolicy
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60050002)]
new object ExplorerPolicy([In, MarshalAs(UnmanagedType.BStr)] string bstrPolicyName);
/// <summary>Retrieves a global Shell setting.</summary>
/// <param name="lSetting">
/// A value that specifies the current Shell setting to retrieve. Only one setting can be retrieved in each call. The following
/// values are recognized by this method.
/// </param>
/// <returns>Set to <c>true</c> if the setting exists; otherwise, <c>false</c>.</returns>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch4-getsetting
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60050003)]
new bool GetSetting([In] SSF lSetting);
/// <summary>Displays your open windows in a 3D stack that you can flip through.</summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/shell-windowswitcher
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60060000)]
void WindowSwitcher();
}
/// <summary>
/// Extends the <c>IShellDispatch5</c> object. In addition to the properties and methods supported by <c>IShellDispatch5</c>,
/// <c>IShellDispatch6</c> adds a method that displays the Apps Search pane.
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch6
[PInvokeData("shldisp.h", MSDNShortId = "540A5CFD-1520-4B61-B461-E893EFA27115")]
[ComImport, Guid("286E6F1B-7113-4355-9562-96B7E9D64C54"), CoClass(typeof(Shell))]
public interface IShellDispatch6 : IShellDispatch5
{
/// <summary>
/// <para>Contains an object that represents an application.</para>
/// <para>This property is read-only.</para>
/// </summary>
/// <remarks>
/// <para>This property is implemented and accessed through the <c>Shell.EjectPC</c> property.</para>
/// <para>
/// The <c>Application</c> property returns the automation object supported by the application that contains the WebBrowser
/// control, if that object is accessible. Otherwise, this property returns the WebBrowser control's automation object.
/// </para>
/// <para>
/// Use this property with the <c>Set</c> and <c>CreateObject</c> commands or with the <c>GetObject</c> command to create and
/// manipulate an instance of the Windows Internet Explorer application.
/// </para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-application
[DispId(0x60020000)]
new object Application { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020000)] get; }
/// <summary>
/// <para>Retrieves an object that represents the parent of the current object.</para>
/// <para>This property is read-only.</para>
/// </summary>
/// <remarks>This property is implemented and accessed through the <c>Shell.Parent</c> property.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-parent
[DispId(0x60020001)]
new object Parent { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020001)] get; }
/// <summary>Creates and returns a <c>Folder</c> object for the specified folder.</summary>
/// <param name="vDir">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// The folder for which to create the <c>Folder</c> object. This can be a string that specifies the path of the folder or one of
/// the <c>ShellSpecialFolderConstants</c> values. Note that the constant names found in <c>ShellSpecialFolderConstants</c> are
/// available in Visual Basic, but not in VBScript or JScript. In those cases, the numeric values must be used in their place.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c><c>Folder</c>**</c></para>
/// <para>
/// Object reference to the <c>Folder</c> object for the specified folder. If the folder is not successfully created, this value
/// returns <c>null</c>.
/// </para>
/// <para>VB</para>
/// <para>Type: <c><c>Folder</c>**</c></para>
/// <para>
/// Object reference to the <c>Folder</c> object for the specified folder. If the folder is not successfully created, this value
/// returns <c>null</c>.
/// </para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.NameSpace</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-namespace
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020002)]
new Folder NameSpace([In, MarshalAs(UnmanagedType.Struct)] object vDir);
/// <summary>
/// Creates a dialog box that enables the user to select a folder and then returns the selected folder's <c>Folder</c> object.
/// </summary>
/// <param name="Hwnd">
/// <para>Type: <c>Integer</c></para>
/// <para>The handle to the parent window of the dialog box. This value can be zero.</para>
/// </param>
/// <param name="Title">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> value that represents the title displayed inside the <c>Browse</c> dialog box.</para>
/// </param>
/// <param name="Options">
/// <para>Type: <c>Integer</c></para>
/// <para>
/// An <c>Integer</c> value that contains the options for the method. This can be zero or a combination of the values listed
/// under the <c>ulFlags</c> member of the <c>BROWSEINFO</c> structure.
/// </para>
/// </param>
/// <param name="RootFolder">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// The root folder to use in the dialog box. The user cannot browse higher in the tree than this folder. If this value is not
/// specified, the root folder used in the dialog box is the desktop. This value can be a string that specifies the path of the
/// folder or one of the <c>ShellSpecialFolderConstants</c> values. Note that the constant names found in
/// <c>ShellSpecialFolderConstants</c> are available in Visual Basic, but not in VBScript or JScript. In those cases, the numeric
/// values must be used in their place.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>FOLDER**</c></para>
/// <para>An object reference to the selected folder's <c>Folder</c> object.</para>
/// <para>VB</para>
/// <para>Type: <c>FOLDER**</c></para>
/// <para>An object reference to the selected folder's <c>Folder</c> object.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.BrowseForFolder</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-browseforfolder
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020003)]
new Folder BrowseForFolder([In] int Hwnd, [In, MarshalAs(UnmanagedType.BStr)] string Title, [In] int Options, [In, Optional, MarshalAs(UnmanagedType.Struct)] object RootFolder);
/// <summary>
/// Creates and returns a <c>ShellWindows</c> object. This object represents a collection of all of the open windows that belong
/// to the Shell.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c><c>IDispatch</c>**</c></para>
/// <para>An object reference to the <c>ShellWindows</c> object.</para>
/// <para>VB</para>
/// <para>Type: <c><c>IDispatch</c>**</c></para>
/// <para>An object reference to the <c>ShellWindows</c> object.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.Windows</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-windows
[return: MarshalAs(UnmanagedType.IDispatch)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020004)]
new object Windows();
/// <summary>Opens the specified folder.</summary>
/// <param name="vDir">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// A string that specifies the path of the folder or one of the <c>ShellSpecialFolderConstants</c> values. Note that the
/// constant names found in <c>ShellSpecialFolderConstants</c> are available in Visual Basic, but not in VBScript or JScript. In
/// those cases, the numeric values must be used in their place.
/// </para>
/// <para>
/// If vDir is set to one of the <c>ShellSpecialFolderConstants</c> and the special folder does not exist, this function will
/// create the folder.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.Open</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-open
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020005)]
new void Open([In, MarshalAs(UnmanagedType.Struct)] object vDir);
/// <summary>Opens a specified folder in a Windows Explorer window.</summary>
/// <param name="vDir">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// The folder to be displayed. This can be a string that specifies the path of the folder or one of the
/// <c>ShellSpecialFolderConstants</c> values. Note that the constant names found in <c>ShellSpecialFolderConstants</c> are
/// available in Visual Basic, but not in VBScript or JScript. In those cases, the numeric values must be used in their place.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.Explore</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-explore
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020006)]
new void Explore([In, MarshalAs(UnmanagedType.Struct)] object vDir);
/// <summary>
/// Minimizes all of the windows on the desktop. This method has the same effect as right-clicking the taskbar and selecting
/// <c>Minimize All Windows</c> on older systems or clicking the <c>Show Desktop</c> icon on the taskbar.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.MinimizeAll</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-minimizeall
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020007)]
new void MinimizeAll();
/// <summary>
/// Restores all desktop windows to the state they were in before the last <c>MinimizeAll</c> command. This method has the same
/// effect as right-clicking the taskbar and selecting <c>Undo Minimize All Windows</c> (on older systems) or a second clicking
/// of the <c>Show Desktop</c> icon in the taskbar.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.UndoMinimizeAll</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-undominimizeall
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020008)]
new void UndoMinimizeALL();
/// <summary>Displays the <c>Run</c> dialog to the user.</summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.FileRun</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-filerun
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020009)]
new void FileRun();
2019-01-14 23:17:12 -05:00
/// <summary>
/// Cascades all of the windows on the desktop. This method has the same effect as right-clicking the taskbar and selecting
/// <c>Cascade windows</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.CascadeWindows</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-cascadewindows
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000a)]
new void CascadeWindows();
/// <summary>
/// Tiles all of the windows on the desktop vertically. This method has the same effect as right-clicking the taskbar and
/// selecting <c>Show windows side by side</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.TileVertically</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-tilevertically
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000b)]
new void TileVertically();
/// <summary>
/// Tiles all of the windows on the desktop horizontally. This method has the same effect as right-clicking the taskbar and
/// selecting <c>Show windows stacked</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.TileHorizontally</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-tilehorizontally
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000c)]
new void TileHorizontally();
/// <summary>
/// Displays the <c>Shut Down Windows</c> dialog box. This is the same as clicking the <c>Start</c> menu and selecting <c>Shut Down</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.ShutdownWindows</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-shutdownwindows
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000d)]
new void ShutdownWindows();
/// <summary>This method is not implemented.</summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-suspend
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000e)]
new void Suspend();
/// <summary>
/// Ejects the computer from its docking station. This is the same as clicking the <c>Start</c> menu and selecting <c>Eject
/// PC</c>, if your computer supports this command.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.EjectPC</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-ejectpc
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000f)]
new void EjectPC();
/// <summary>
/// Displays the <c>Date and Time</c> dialog box. This method has the same effect as right-clicking the clock in the taskbar
/// status area and selecting <c>Adjust date/time</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.SetTime</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-settime
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020010)]
new void SetTime();
/// <summary>
/// Displays the <c>Taskbar and Start Menu Properties</c> dialog box. This method has the same effect as right-clicking the
/// taskbar and selecting <c>Properties</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.TrayProperties</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-trayproperties
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020011)]
new void TrayProperties();
/// <summary>
/// Displays the Windows Help and Support window. This method has the same effect as clicking the <c>Start</c> menu and selecting
/// <c>Help and Support</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.Help</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-help
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020012)]
new void Help();
/// <summary>
/// Displays the <c>Find: All Files</c> dialog box. This is the same as clicking the <c>Start</c> menu and then selecting <c>Search</c>.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.FindFiles</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-findfiles
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020013)]
new void FindFiles();
/// <summary>
/// Displays the <c>Search Results: Computers</c> dialog box. The dialog box shows the result of the search for a specified computer.
/// </summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.FindComputer</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-findcomputer
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020014)]
new void FindComputer();
/// <summary>Refreshes the contents of the <c>Start</c> menu. Used only with systems preceding Windows XP.</summary>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.TrayProperties</c> method.</para>
/// <para>
/// The functionality that <c>RefreshMenu</c> provides is handled automatically under Windows XP or later. Do not call this
/// method on Windows XP or later.
/// </para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-refreshmenu
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020015)]
new void RefreshMenu();
/// <summary>
/// Runs the specified Control Panel application. If the application is already open, it will activate the running instance.
/// </summary>
/// <param name="bstrDir">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>The Control Panel application's file name.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>This method does not return a value.</para>
/// <para>VB</para>
/// <para>This method does not return a value.</para>
/// </returns>
/// <remarks>This method is implemented and accessed through the <c>Shell.ControlPanelItem</c> method.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch-controlpanelitem
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020016)]
new void ControlPanelItem([In, MarshalAs(UnmanagedType.BStr)] string bstrDir);
/// <summary>Retrieves a group's restriction setting from the registry.</summary>
/// <param name="sGroup">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>
/// A <c>String</c> that contains the group name. This value is the name of a registry subkey under which to check for the restriction.
/// </para>
/// </param>
/// <param name="sRestriction">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the restriction whose value is to be retrieved.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Integer*</c></para>
/// <para>The value of the restriction. If the specified restriction is not found, the return value is 0.</para>
/// <para>VB</para>
/// <para>Type: <c>Integer*</c></para>
/// <para>The value of the restriction. If the specified restriction is not found, the return value is 0.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.IsRestricted</c> method.</para>
/// <para><c>IsRestricted</c> first looks for a subkey name that matches sGroup under the following key.</para>
/// <para>
/// Restrictions are declared as values of the individual policy subkeys. If the restriction named in sRestriction is found in
/// the subkey named in sGroup, <c>IsRestricted</c> returns the restriction's current value. If the restriction is not found
/// under <c>HKEY_LOCAL_MACHINE</c>, the same subkey is checked under <c>HKEY_CURRENT_USER</c>.
/// </para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-isrestricted
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030000)]
new int IsRestricted([In, MarshalAs(UnmanagedType.BStr)] string sGroup, [In, MarshalAs(UnmanagedType.BStr)] string sRestriction);
/// <summary>Performs a specified operation on a specified file.</summary>
/// <param name="sFile">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>
/// A <c>String</c> that contains the name of the file on which <c>ShellExecute</c> will perform the action specified by vOperation.
/// </para>
/// </param>
/// <param name="vArguments">
/// <para>Type: <c>Variant</c></para>
/// <para>A string that contains parameter values for the operation.</para>
/// </param>
/// <param name="vDirectory">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// The fully qualified path of the directory that contains the file specified by sFile. If this parameter is not specified, the
/// current working directory is used.
/// </para>
/// </param>
/// <param name="vOperation">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// The operation to be performed. This value is set to one of the verb strings that is supported by the file. For a discussion
/// of verbs, see the Remarks section. If this parameter is not specified, the default operation is performed.
/// </para>
/// </param>
/// <param name="vShow">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// A recommendation as to how the application window should be displayed initially. The application can ignore this
/// recommendation. This parameter can be one of the following values. If this parameter is not specified, the application uses
/// its default value.
/// </para>
/// <list type="table">
/// <listheader>
/// <term>Value</term>
/// <term>Meaning</term>
/// </listheader>
/// <item>
/// <term>0</term>
/// <term>Open the application with a hidden window.</term>
/// </item>
/// <item>
/// <term>1</term>
/// <term>
/// Open the application with a normal window. If the window is minimized or maximized, the system restores it to its original
/// size and position.
/// </term>
/// </item>
/// <item>
/// <term>2</term>
/// <term>Open the application with a minimized window.</term>
/// </item>
/// <item>
/// <term>3</term>
/// <term>Open the application with a maximized window.</term>
/// </item>
/// <item>
/// <term>4</term>
/// <term>Open the application with its window at its most recent size and position. The active window remains active.</term>
/// </item>
/// <item>
/// <term>5</term>
/// <term>Open the application with its window at its current size and position.</term>
/// </item>
/// <item>
/// <term>7</term>
/// <term>Open the application with a minimized window. The active window remains active.</term>
/// </item>
/// <item>
/// <term>10</term>
/// <term>Open the application with its window in the default state specified by the application.</term>
/// </item>
/// </list>
/// </param>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.ShellExecute</c> method.</para>
/// <para>
/// This method is equivalent to launching one of the commands associated with a file's shortcut menu. Each command is
/// represented by a verb string. The set of supported verbs varies from file to file. The most commonly supported verb is
/// "open", which is also usually the default verb. Other verbs might be supported by only certain types of files. For further
/// discussion of Shell verbs, see Launching Applications or Extending Shortcut Menus.
/// </para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-shellexecute
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030001)]
new void ShellExecute([In, MarshalAs(UnmanagedType.BStr)] string sFile, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vArguments, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vDirectory, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vOperation, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vShow);
/// <summary>Displays the <c>Find Printer</c> dialog box.</summary>
/// <param name="Name">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the printer name.</para>
/// </param>
/// <param name="location">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the printer location.</para>
/// </param>
/// <param name="model">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the printer model.</para>
/// </param>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.FindPrinter</c> method.</para>
/// <para>
/// If you assign strings to one or more of the optional parameters, they are displayed as default values in the associated edit
/// control when the <c>Find Printer</c> dialog box is displayed. The user can either accept or override these values. If no
/// value is assigned to a parameter, the associated edit box is empty and the user must enter a value.
/// </para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-findprinter
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030002)]
new void FindPrinter([In, Optional, MarshalAs(UnmanagedType.BStr)] string Name, [In, Optional, MarshalAs(UnmanagedType.BStr)] string location, [In, Optional, MarshalAs(UnmanagedType.BStr)] string model);
/// <summary>Retrieves system information.</summary>
/// <param name="sName">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that specifies the system information that is being requested.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant</c></para>
/// <para>
/// Returns the value of the requested system information. The return type depends on which system information is requested. See
/// the Remarks section for details.
/// </para>
/// <para>VB</para>
/// <para>Type: <c>Variant</c></para>
/// <para>
/// Returns the value of the requested system information. The return type depends on which system information is requested. See
/// the Remarks section for details.
/// </para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.GetSystemInformation</c> method.</para>
/// <para>
/// This method can be used to request many system information values. The following table gives the sName value that is used to
/// request the information and the associated type of the returned value.
/// </para>
/// <para>sName</para>
/// <para>Return type</para>
/// <para>Description</para>
/// <para>DirectoryServiceAvailable</para>
/// <para><c>Boolean</c></para>
/// <para>Set to <c>true</c> if the directory service is available; otherwise, <c>false</c>.</para>
/// <para>DoubleClickTime</para>
/// <para><c>Integer</c></para>
/// <para>The double-click time, in milliseconds.</para>
/// <para>ProcessorLevel</para>
/// <para><c>Integer</c></para>
/// <para>
/// <c>Windows Vista and later</c>. The processor level. Returns 3, 4, or 5, for x386, x486, and Pentium-level processors, respectively.
/// </para>
/// <para>ProcessorSpeed</para>
/// <para><c>Integer</c></para>
/// <para>The processor speed, in megahertz (MHz).</para>
/// <para>ProcessorArchitecture</para>
/// <para><c>Integer</c></para>
/// <para>
/// The processor architecture. For details, see the discussion of the <c>wProcessorArchitecture</c> member of the
/// <c>SYSTEM_INFO</c> structure.
/// </para>
/// <para>PhysicalMemoryInstalled</para>
/// <para><c>Integer</c></para>
/// <para>The amount of physical memory installed, in bytes.</para>
/// <para>The following are valid only on Windows XP.</para>
/// <para>IsOS_Professional</para>
/// <para><c>Boolean</c></para>
/// <para>Set to <c>true</c> if the operating system is Windows XP Professional Edition; otherwise, <c>false</c>.</para>
/// <para>IsOS_Personal</para>
/// <para><c>Boolean</c></para>
/// <para>Set to <c>true</c> if the operating system is Windows XP Home Edition; otherwise, <c>false</c>.</para>
/// <para>The following is valid only on Windows XP and later.</para>
/// <para>IsOS_DomainMember</para>
/// <para><c>Boolean</c></para>
/// <para>Set to <c>true</c> if the computer is a member of a domain; otherwise, <c>false</c>.</para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-getsysteminformation
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030003)]
new object GetSystemInformation([In, MarshalAs(UnmanagedType.BStr)] string sName);
/// <summary>Starts a named service.</summary>
/// <param name="sServiceName">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the name of the service.</para>
/// </param>
/// <param name="vPersistent">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// Set to <c>true</c> to have the service started automatically by the service control manager during system startup. Set to
/// <c>false</c> to leave the service configuration unchanged.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// <para>VB</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.ServiceStart</c> method.</para>
/// <para>
/// The method returns <c>false</c> if the service has already been started. Before calling this method, you can call
/// <c>Shell.IsServiceRunning</c> to ascertain the status of the service.
/// </para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-servicestart
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030004)]
new object ServiceStart([In, MarshalAs(UnmanagedType.BStr)] string sServiceName, [In, MarshalAs(UnmanagedType.Struct)] object vPersistent);
/// <summary>Stops a named service.</summary>
/// <param name="sServiceName">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the name of the service.</para>
/// </param>
/// <param name="vPersistent">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// Set to <c>true</c> to have the service started by the service control manager when <c>ServiceStart</c> is called. To leave
/// the service configuration unchanged, set vPersistent to <c>false</c>.
/// </para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// <para>VB</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.ServiceStop</c> method.</para>
/// <para>
/// The method returns <c>false</c> if the service has already been stopped. Before calling this method, you can call
/// <c>Shell.IsServiceRunning</c> to ascertain the status of the service.
/// </para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-servicestop
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030005)]
new object ServiceStop([In, MarshalAs(UnmanagedType.BStr)] string sServiceName, [In, MarshalAs(UnmanagedType.Struct)] object vPersistent);
/// <summary>Returns a value that indicates whether a particular service is running.</summary>
/// <param name="sServiceName">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>A <c>String</c> that contains the name of the service.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if the service specified by sServiceName is running; otherwise, <c>false</c>.</para>
/// <para>VB</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if the service specified by sServiceName is running; otherwise, <c>false</c>.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.IsServiceRunning</c> method.</para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-isservicerunning
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030006)]
new object IsServiceRunning([In, MarshalAs(UnmanagedType.BStr)] string sServiceName);
/// <summary>Determines if the current user can start and stop the named service.</summary>
/// <param name="sServiceName">
/// <para>Type: <c>String</c></para>
/// <para>A <c>String</c> that contains the name of the service.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if the user can start and stop the service; otherwise, <c>false</c>.</para>
/// <para>VB</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if the user can start and stop the service; otherwise, <c>false</c>.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.CanStartStopService</c> method.</para>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-canstartstopservice
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030007)]
new object CanStartStopService([In, MarshalAs(UnmanagedType.BStr)] string sServiceName);
/// <summary>Displays a browser bar.</summary>
/// <param name="sCLSID">
/// <para>Type: <c><c>BSTR</c></c></para>
/// <para>
/// A <c>String</c> that contains the string form of the CLSID of the browser bar to be displayed. The object must be registered
/// as an Explorer Bar object with a CATID_InfoBand component category. For further information, see Creating Custom Explorer
/// Bars, Tool Bands, and Desk Bands.
/// </para>
/// </param>
/// <param name="vShow">
/// <para>Type: <c>Variant</c></para>
/// <para>Set to <c>true</c> to show the browser bar or <c>false</c> to hide it.</para>
/// </param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// <para>VB</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>Returns <c>true</c> if successful; otherwise, <c>false</c>.</para>
/// </returns>
/// <remarks>
/// <para>This method is implemented and accessed through the <c>Shell.ShowBrowserBar</c> method.</para>
/// <para>
/// You can display one of the standard Explorer Bars by setting the sCLSID parameter to the CLSID of that Explorer Bar. The
/// standard Explorer Bars and their CLSID strings are as follows:
/// </para>
/// <list type="table">
/// <listheader>
/// <term>Explorer Bar</term>
/// <term>CLSID string</term>
/// </listheader>
/// <item>
/// <term>Favorites</term>
/// <term>{EFA24E61-B078-11d0-89E4-00C04FC9E26E}</term>
/// </item>
/// <item>
/// <term>Folders</term>
/// <term>{EFA24E64-B078-11d0-89E4-00C04FC9E26E}</term>
/// </item>
/// <item>
/// <term>History</term>
/// <term>{EFA24E62-B078-11d0-89E4-00C04FC9E26E}</term>
/// </item>
/// <item>
/// <term>Search</term>
/// <term>{30D02401-6A81-11d0-8274-00C04FD5AE38}</term>
/// </item>
/// </list>
/// <para>This method is not currently available in Microsoft Visual Basic.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch2-showbrowserbar
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030008)]
new object ShowBrowserBar([In, MarshalAs(UnmanagedType.BStr)] string sCLSID, [In, MarshalAs(UnmanagedType.Struct)] object vShow);
/// <summary>Adds a file to the most recently used (MRU) list.</summary>
/// <param name="varFile">
/// <para>Type: <c>Variant</c></para>
/// <para>A <c>String</c> that contains the path of the file to add to the list of recently used documents.</para>
/// <para><c>Windows Vista</c>: Set this parameter to <c>null</c> to clear the recent documents folder.</para>
/// </param>
/// <param name="bstrCategory">A <c>String</c> that contains the name of the category in which to place the file.</param>
// https://docs.microsoft.com/en-us/windows/win32/shell/shell-addtorecent
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60040000)]
new void AddToRecent([In, MarshalAs(UnmanagedType.Struct)] object varFile, [In, Optional, MarshalAs(UnmanagedType.BStr)] string bstrCategory);
/// <summary>Displays the <c>Windows Security</c> dialog box.</summary>
/// <remarks>
/// This method displays the dialog box shown after pressing CTRL+ALT+DELETE or using the security option on the <c>Start</c> menu.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch4-windowssecurity
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60050000)]
new void WindowsSecurity();
/// <summary>Displays or hides the desktop.</summary>
/// <remarks>
/// This method has the same effect as the <c>Show Desktop</c> button on the taskbar. It either hides all open windows to show
/// the desktop or it hides the desktop by showing all open windows. The <c>ToggleDesktop</c> method does not display a user
/// interface, it just invokes the toggle action.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch4-toggledesktop
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60050001)]
new void ToggleDesktop();
/// <summary>Gets the value for a specified Windows Internet Explorer policy.</summary>
/// <param name="bstrPolicyName">A <c>String</c> that specifies the name of the policy.</param>
/// <returns>
/// <para>JScript</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>The value associated with the specified policy name.</para>
/// <para>VB</para>
/// <para>Type: <c>Variant*</c></para>
/// <para>The value associated with the specified policy name.</para>
/// </returns>
/// <remarks>
/// <para>Network Administrators can control and manage the computing environment of their users by setting policies.</para>
/// <para>
/// The specified value name must be within the <c>HKEY_CURRENT_USER</c>\ <c>Software</c>\ <c>Microsoft</c>\ <c>Windows</c>\
/// <c>CurrentVersion</c>\ <c>Policies</c>\ <c>Explorer</c> subkey. If the value name does not exist then the method returns <c>null</c>.
/// </para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch4-explorerpolicy
[return: MarshalAs(UnmanagedType.Struct)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60050002)]
new object ExplorerPolicy([In, MarshalAs(UnmanagedType.BStr)] string bstrPolicyName);
/// <summary>Retrieves a global Shell setting.</summary>
/// <param name="lSetting">
/// A value that specifies the current Shell setting to retrieve. Only one setting can be retrieved in each call. The following
/// values are recognized by this method.
/// </param>
/// <returns>Set to <c>true</c> if the setting exists; otherwise, <c>false</c>.</returns>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch4-getsetting
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60050003)]
new bool GetSetting([In] SSF lSetting);
/// <summary>Displays your open windows in a 3D stack that you can flip through.</summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/shell-windowswitcher
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60060000)]
new void WindowSwitcher();
/// <summary>Displays the Apps Search pane, which normally appears when you begin to type a search term from the Start screen.</summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch6-searchcommand
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60070000)]
void SearchCommand();
}
/// <summary>Exposes methods that modify the view and select items in the current folder.</summary>
// https://docs.microsoft.com/en-us/windows/desktop/api/shldisp/nn-shldisp-ishellfolderviewdual
[PInvokeData("shldisp.h", MSDNShortId = "48135f9d-ee80-4dec-87dc-83f407c25777")]
[ComImport, Guid("E7A1AF80-4D96-11CF-960C-0080C7F4EE85"), CoClass(typeof(ShellFolderView))]
public interface IShellFolderViewDual
{
/// <summary>
/// <para>Contains the object's Application object.</para>
/// <para>This property is read-only.</para>
/// </summary>
/// <remarks>
/// <para>
/// The <c>Application</c> property returns the automation object supported by the application that contains the WebBrowser
/// control, if that object is accessible. Otherwise, this property returns the WebBrowser control's automation object.
/// </para>
/// <para>
/// Use this property with the <c>Set</c> and <c>CreateObject</c> commands or with the <c>GetObject</c> command to create and
/// manipulate an instance of the Windows Internet Explorer application.
/// </para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview-application
[DispId(0x60020000)]
object Application { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020000)] get; }
/// <summary>This property is not implemented.</summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview-parent
[DispId(0x60020001)]
object Parent { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020001)] get; }
/// <summary>
/// <para>Gets a <c>Folder</c> object that represents the view.</para>
/// <para>This property is read-only.</para>
/// </summary>
/// <remarks><c>Folder</c> can only be called on the local system. It will not work when run on a webpage over HTTP or UNC.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview-folder
[DispId(0x60020002)]
Folder Folder { [return: MarshalAs(UnmanagedType.Interface)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020002)] get; }
/// <summary>Gets a <c>FolderItems</c> object that represents all of the selected items in the view.</summary>
/// <returns>
/// <para>Type: <c><c>FolderItems</c>**</c></para>
/// <para>An object reference to the <c>FolderItems</c> object.</para>
/// </returns>
/// <remarks>
/// <c>SelectedItems</c> can only be called on the local system. It will not work when run on a webpage over HTTP or UNC.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview-selecteditems
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020003)]
FolderItems SelectedItems();
/// <summary>
/// <para>Gets a <c>FolderItem</c> object that represents the item that has the input focus.</para>
/// <para>This property is read-only.</para>
/// </summary>
/// <remarks>
/// <c>FocusedItem</c> can only be called on the local system. It will not work when run on a webpage over HTTP or UNC.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview-focuseditem
[DispId(0x60020004)]
FolderItem FocusedItem { [return: MarshalAs(UnmanagedType.Interface)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020004)] get; }
/// <summary>Sets the selection state of an item in the view.</summary>
/// <param name="vItem">
/// <para>Type: <c>Variant*</c></para>
/// <para>The <c>FolderItem</c> object for which the selection state will be set.</para>
/// </param>
/// <param name="dwFlags">
/// <para>Type: <c>Integer</c></para>
/// <para>A set of flags that indicate the new selection state. This can be one or more of the following values.</para>
/// <list type="bullet">
/// <item>(0) Deselect the item.</item>
/// <item>(1) Select the item.</item>
/// <item>(3) Put the item in edit mode.</item>
/// <item>(4) Deselect all but the specified item.</item>
/// <item>(8) Ensure the item is displayed in the view.</item>
/// <item>(16) Give the item the focus.</item>
/// </list>
/// </param>
/// <returns>This method does not return a value.</returns>
/// <remarks>
/// <c>FocusedItem</c> can only be called on the local system. It will not work when run on a webpage over HTTP or UNC.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview-selectitem
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020005)]
void SelectItem([In, MarshalAs(UnmanagedType.Struct)] ref object vItem, [In] int dwFlags);
/// <summary>Creates a shortcut menu for the specified item and returns the selected command string.</summary>
/// <param name="vItem">
/// <para>Type: <c>Variant</c></para>
/// <para>The <c>FolderItem</c> object for which the shortcut menu will be created.</para>
/// </param>
/// <param name="vx">
/// <para>Type: <c>Variant</c></para>
/// <para>The horizontal position of the menu, in screen coordinates.</para>
/// </param>
/// <param name="vy">
/// <para>Type: <c>Variant</c></para>
/// <para>The vertical position of the menu, in screen coordinates.</para>
/// </param>
/// <returns>
/// <para>Type: <c><c>BSTR</c>*</c></para>
/// <para>The <c>String</c> that receives the command string.</para>
/// </returns>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview-popupitemmenu
[return: MarshalAs(UnmanagedType.BStr)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020006)]
string PopupItemMenu([In, MarshalAs(UnmanagedType.Interface)] FolderItem vItem, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vx, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vy);
/// <summary>
/// <para>[This property is not supported in Windows XP or later.]</para>
/// <para>Contains the scripting object for the view.</para>
/// <para>This property is read-only.</para>
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview-script
[DispId(0x60020007)]
object Script { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020007)] get; }
/// <summary>
/// <para>Gets a set of flags that indicate the current options of the view.</para>
/// <para>This property is read-only.</para>
/// </summary>
/// <remarks>
/// <c>FocusedItem</c> can only be called on the local system. It will not work when run on a webpage over HTTP or UNC.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview-viewoptions
[DispId(0x60020008)]
ShellFolderViewOptions ViewOptions { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020008)] get; }
}
/// <summary>Exposes methods that modify the view and select items in the current folder.</summary>
/// <remarks>This interface also provides the methods of the IShellFolderViewDual interface, from which it inherits.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/shldisp/nn-shldisp-ishellfolderviewdual2
[PInvokeData("shldisp.h", MSDNShortId = "f53b779e-a015-4b17-b04d-e0739cba8168")]
[ComImport, Guid("31C147B6-0ADE-4A3C-B514-DDF932EF6D17"), CoClass(typeof(ShellFolderView))]
public interface IShellFolderViewDual2 : IShellFolderViewDual
{
/// <summary>
/// <para>Contains the object's Application object.</para>
/// <para>This property is read-only.</para>
/// </summary>
/// <remarks>
/// <para>
/// The <c>Application</c> property returns the automation object supported by the application that contains the WebBrowser
/// control, if that object is accessible. Otherwise, this property returns the WebBrowser control's automation object.
/// </para>
/// <para>
/// Use this property with the <c>Set</c> and <c>CreateObject</c> commands or with the <c>GetObject</c> command to create and
/// manipulate an instance of the Windows Internet Explorer application.
/// </para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview-application
[DispId(0x60020000)]
new object Application { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020000)] get; }
/// <summary>This property is not implemented.</summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview-parent
[DispId(0x60020001)]
new object Parent { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020001)] get; }
/// <summary>
/// <para>Gets a <c>Folder</c> object that represents the view.</para>
/// <para>This property is read-only.</para>
/// </summary>
/// <remarks><c>Folder</c> can only be called on the local system. It will not work when run on a webpage over HTTP or UNC.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview-folder
[DispId(0x60020002)]
new Folder Folder { [return: MarshalAs(UnmanagedType.Interface)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020002)] get; }
/// <summary>Gets a <c>FolderItems</c> object that represents all of the selected items in the view.</summary>
/// <returns>
/// <para>Type: <c><c>FolderItems</c>**</c></para>
/// <para>An object reference to the <c>FolderItems</c> object.</para>
/// </returns>
/// <remarks>
/// <c>SelectedItems</c> can only be called on the local system. It will not work when run on a webpage over HTTP or UNC.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview-selecteditems
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020003)]
new FolderItems SelectedItems();
/// <summary>
/// <para>Gets a <c>FolderItem</c> object that represents the item that has the input focus.</para>
/// <para>This property is read-only.</para>
/// </summary>
/// <remarks>
/// <c>FocusedItem</c> can only be called on the local system. It will not work when run on a webpage over HTTP or UNC.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview-focuseditem
[DispId(0x60020004)]
new FolderItem FocusedItem { [return: MarshalAs(UnmanagedType.Interface)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020004)] get; }
/// <summary>Sets the selection state of an item in the view.</summary>
/// <param name="vItem">
/// <para>Type: <c>Variant*</c></para>
/// <para>The <c>FolderItem</c> object for which the selection state will be set.</para>
/// </param>
/// <param name="dwFlags">
/// <para>Type: <c>Integer</c></para>
/// <para>A set of flags that indicate the new selection state. This can be one or more of the following values.</para>
/// <list type="bullet">
/// <item>(0) Deselect the item.</item>
/// <item>(1) Select the item.</item>
/// <item>(3) Put the item in edit mode.</item>
/// <item>(4) Deselect all but the specified item.</item>
/// <item>(8) Ensure the item is displayed in the view.</item>
/// <item>(16) Give the item the focus.</item>
/// </list>
/// </param>
/// <returns>This method does not return a value.</returns>
/// <remarks>
/// <c>FocusedItem</c> can only be called on the local system. It will not work when run on a webpage over HTTP or UNC.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview-selectitem
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020005)]
new void SelectItem([In, MarshalAs(UnmanagedType.Struct)] ref object vItem, [In] int dwFlags);
/// <summary>Creates a shortcut menu for the specified item and returns the selected command string.</summary>
/// <param name="vItem">
/// <para>Type: <c>Variant</c></para>
/// <para>The <c>FolderItem</c> object for which the shortcut menu will be created.</para>
/// </param>
/// <param name="vx">
/// <para>Type: <c>Variant</c></para>
/// <para>The horizontal position of the menu, in screen coordinates.</para>
/// </param>
/// <param name="vy">
/// <para>Type: <c>Variant</c></para>
/// <para>The vertical position of the menu, in screen coordinates.</para>
/// </param>
/// <returns>
/// <para>Type: <c><c>BSTR</c>*</c></para>
/// <para>The <c>String</c> that receives the command string.</para>
/// </returns>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview-popupitemmenu
[return: MarshalAs(UnmanagedType.BStr)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020006)]
new string PopupItemMenu([In, MarshalAs(UnmanagedType.Interface)] FolderItem vItem, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vx, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vy);
/// <summary>
/// <para>[This property is not supported in Windows XP or later.]</para>
/// <para>Contains the scripting object for the view.</para>
/// <para>This property is read-only.</para>
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview-script
[DispId(0x60020007)]
new object Script { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020007)] get; }
/// <summary>
/// <para>Gets a set of flags that indicate the current options of the view.</para>
/// <para>This property is read-only.</para>
/// </summary>
/// <remarks>
/// <c>FocusedItem</c> can only be called on the local system. It will not work when run on a webpage over HTTP or UNC.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview-viewoptions
[DispId(0x60020008)]
new ShellFolderViewOptions ViewOptions { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020008)] get; }
/// <summary>Gets the current view mode of the current folder.</summary>
/// <returns>
/// <para>Type: <c>uint*</c></para>
/// <para>An unsigned integer that represents the current view mode. For a list of possible values see FOLDERVIEWMODE.</para>
/// </returns>
// https://docs.microsoft.com/en-us/windows/win32/api/shldisp/nf-shldisp-ishellfolderviewdual2-get_currentviewmode
[DispId(0x60030000)]
FOLDERVIEWMODE CurrentViewMode { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030000)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030000)] set; }
/// <summary>Selects an item relative to the current item.</summary>
/// <param name="iRelative">
/// <para>Type: <c>int</c></para>
/// <para>The offset of the item to be selected in relation to the current item.</para>
/// </param>
/// <remarks>
/// The current item is defined as the item in the view with the SVSI_SELECTIONMARK state. If there is no item with
/// SVSI_SELECTIONMARK, the method returns S_FALSE and does nothing.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/shldisp/nf-shldisp-ishellfolderviewdual2-selectitemrelative
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030002)]
void SelectItemRelative([In] int iRelative);
}
/// <summary>Exposes methods that modify the current folder view.</summary>
/// <remarks>
/// This interface also provides the methods of the IShellFolderViewDual and IShellFolderViewDual2 interfaces, from which it inherits.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/shldisp/nn-shldisp-ishellfolderviewdual3
[PInvokeData("shldisp.h", MSDNShortId = "1aa70db8-4225-49de-8b8f-ec86b1aafa22")]
[ComImport, Guid("29EC8E6C-46D3-411F-BAAA-611A6C9CAC66"), CoClass(typeof(ShellFolderView))]
public interface IShellFolderViewDual3 : IShellFolderViewDual2
{
/// <summary>
/// <para>Contains the object's Application object.</para>
/// <para>This property is read-only.</para>
/// </summary>
/// <remarks>
/// <para>
/// The <c>Application</c> property returns the automation object supported by the application that contains the WebBrowser
/// control, if that object is accessible. Otherwise, this property returns the WebBrowser control's automation object.
/// </para>
/// <para>
/// Use this property with the <c>Set</c> and <c>CreateObject</c> commands or with the <c>GetObject</c> command to create and
/// manipulate an instance of the Windows Internet Explorer application.
/// </para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview-application
[DispId(0x60020000)]
new object Application { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020000)] get; }
/// <summary>This property is not implemented.</summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview-parent
[DispId(0x60020001)]
new object Parent { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020001)] get; }
/// <summary>
/// <para>Gets a <c>Folder</c> object that represents the view.</para>
/// <para>This property is read-only.</para>
/// </summary>
/// <remarks><c>Folder</c> can only be called on the local system. It will not work when run on a webpage over HTTP or UNC.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview-folder
[DispId(0x60020002)]
new Folder Folder { [return: MarshalAs(UnmanagedType.Interface)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020002)] get; }
/// <summary>Gets a <c>FolderItems</c> object that represents all of the selected items in the view.</summary>
/// <returns>
/// <para>Type: <c><c>FolderItems</c>**</c></para>
/// <para>An object reference to the <c>FolderItems</c> object.</para>
/// </returns>
/// <remarks>
/// <c>SelectedItems</c> can only be called on the local system. It will not work when run on a webpage over HTTP or UNC.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview-selecteditems
[return: MarshalAs(UnmanagedType.Interface)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020003)]
new FolderItems SelectedItems();
/// <summary>
/// <para>Gets a <c>FolderItem</c> object that represents the item that has the input focus.</para>
/// <para>This property is read-only.</para>
/// </summary>
/// <remarks>
/// <c>FocusedItem</c> can only be called on the local system. It will not work when run on a webpage over HTTP or UNC.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview-focuseditem
[DispId(0x60020004)]
new FolderItem FocusedItem { [return: MarshalAs(UnmanagedType.Interface)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020004)] get; }
/// <summary>Sets the selection state of an item in the view.</summary>
/// <param name="vItem">
/// <para>Type: <c>Variant*</c></para>
/// <para>The <c>FolderItem</c> object for which the selection state will be set.</para>
/// </param>
/// <param name="dwFlags">
/// <para>Type: <c>Integer</c></para>
/// <para>A set of flags that indicate the new selection state. This can be one or more of the following values.</para>
/// <list type="bullet">
/// <item>(0) Deselect the item.</item>
/// <item>(1) Select the item.</item>
/// <item>(3) Put the item in edit mode.</item>
/// <item>(4) Deselect all but the specified item.</item>
/// <item>(8) Ensure the item is displayed in the view.</item>
/// <item>(16) Give the item the focus.</item>
/// </list>
/// </param>
/// <returns>This method does not return a value.</returns>
/// <remarks>
/// <c>FocusedItem</c> can only be called on the local system. It will not work when run on a webpage over HTTP or UNC.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview-selectitem
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020005)]
new void SelectItem([In, MarshalAs(UnmanagedType.Struct)] ref object vItem, [In] int dwFlags);
/// <summary>Creates a shortcut menu for the specified item and returns the selected command string.</summary>
/// <param name="vItem">
/// <para>Type: <c>Variant</c></para>
/// <para>The <c>FolderItem</c> object for which the shortcut menu will be created.</para>
/// </param>
/// <param name="vx">
/// <para>Type: <c>Variant</c></para>
/// <para>The horizontal position of the menu, in screen coordinates.</para>
/// </param>
/// <param name="vy">
/// <para>Type: <c>Variant</c></para>
/// <para>The vertical position of the menu, in screen coordinates.</para>
/// </param>
/// <returns>
/// <para>Type: <c><c>BSTR</c>*</c></para>
/// <para>The <c>String</c> that receives the command string.</para>
/// </returns>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview-popupitemmenu
[return: MarshalAs(UnmanagedType.BStr)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020006)]
new string PopupItemMenu([In, MarshalAs(UnmanagedType.Interface)] FolderItem vItem, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vx, [In, Optional, MarshalAs(UnmanagedType.Struct)] object vy);
/// <summary>
/// <para>[This property is not supported in Windows XP or later.]</para>
/// <para>Contains the scripting object for the view.</para>
/// <para>This property is read-only.</para>
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview-script
[DispId(0x60020007)]
new object Script { [return: MarshalAs(UnmanagedType.IDispatch)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020007)] get; }
/// <summary>
/// <para>Gets a set of flags that indicate the current options of the view.</para>
/// <para>This property is read-only.</para>
/// </summary>
/// <remarks>
/// <c>FocusedItem</c> can only be called on the local system. It will not work when run on a webpage over HTTP or UNC.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview-viewoptions
[DispId(0x60020008)]
new ShellFolderViewOptions ViewOptions { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020008)] get; }
/// <summary>Gets the current view mode of the current folder.</summary>
/// <returns>
/// <para>Type: <c>uint*</c></para>
/// <para>An unsigned integer that represents the current view mode. For a list of possible values see FOLDERVIEWMODE.</para>
/// </returns>
// https://docs.microsoft.com/en-us/windows/win32/api/shldisp/nf-shldisp-ishellfolderviewdual2-get_currentviewmode
[DispId(0x60030000)]
new FOLDERVIEWMODE CurrentViewMode { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030000)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030000)] set; }
/// <summary>Selects an item relative to the current item.</summary>
/// <param name="iRelative">
/// <para>Type: <c>int</c></para>
/// <para>The offset of the item to be selected in relation to the current item.</para>
/// </param>
/// <remarks>
/// The current item is defined as the item in the view with the SVSI_SELECTIONMARK state. If there is no item with
/// SVSI_SELECTIONMARK, the method returns S_FALSE and does nothing.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/shldisp/nf-shldisp-ishellfolderviewdual2-selectitemrelative
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030002)]
new void SelectItemRelative([In] int iRelative);
/// <summary>Gets or sets the column name used for grouping the folder view.</summary>
// https://docs.microsoft.com/en-us/windows/win32/api/shldisp/nf-shldisp-ishellfolderviewdual3-get_groupby
[DispId(0x60040000)]
string GroupBy { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60040000)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60040000)] set; }
/// <summary>Gets or sets the settings for the current folder.</summary>
[DispId(0x60040002)]
FOLDERFLAGS FolderFlags { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60040002)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60040002)] set; }
/// <summary>Gets or sets the names of the columns used to sort the current folder.</summary>
[DispId(0x60040004)]
string SortColumns { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60040004)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60040004)] set; }
/// <summary>Gets or sets the icon size setting for the current folder.</summary>
[DispId(0x60040006)]
int IconSize { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60040006)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60040006)] set; }
/// <summary>Sets the filter on the contents of the current view.</summary>
/// <param name="bstrFilterText">The string that names the filter view for the current folder.</param>
// https://docs.microsoft.com/en-us/windows/win32/api/shldisp/nf-shldisp-ishellfolderviewdual3-filterview
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60040008)]
void FilterView([In, MarshalAs(UnmanagedType.BStr)] string bstrFilterText);
}
/// <summary>
/// Manages Shell links. This object makes much of the functionality of the <c>IShellLink</c> interface available to scripting applications.
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/shelllinkobject-object
[PInvokeData("shldisp.h", MSDNShortId = "d3c0ccf8-0f83-42f7-9d6f-1fb293da6364")]
[ComImport, Guid("88A05C00-F000-11CE-8350-444553540000"), CoClass(typeof(ShellLinkObject))]
public interface IShellLinkDual
{
/// <summary>
/// <para>Gets or sets the path to the link object.</para>
/// <para>This property is read/write.</para>
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/shelllinkobject-path
[DispId(0x60020000)]
string Path { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020000)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020000)] set; }
/// <summary>
/// <para>Gets or sets the description of the link.</para>
/// <para>This property is read/write.</para>
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/shelllinkobject-description
[DispId(0x60020002)]
string Description { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020002)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020002)] set; }
/// <summary>
/// <para>Gets or sets the working directory specified in the link.</para>
/// <para>This property is read/write.</para>
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/shelllinkobject-workingdirectory
[DispId(0x60020004)]
string WorkingDirectory { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020004)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020004)] set; }
/// <summary>
/// <para>Contains a link's arguments.</para>
/// <para>This property is read/write.</para>
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/shelllinkobject-arguments
[DispId(0x60020006)]
string Arguments { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020006)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020006)] set; }
/// <summary>
/// <para>Gets or sets the keyboard shortcut for the link.</para>
/// <para>This property is read/write.</para>
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/shelllinkobject-hotkey
[DispId(0x60020008)]
int Hotkey { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020008)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020008)] set; }
/// <summary>
/// <para>Gets or sets the initial display state (sized, minimized, or maximized) of the link's command.</para>
/// <para>This property is read/write.</para>
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/shelllinkobject-showcommand
[DispId(0x6002000a)]
int ShowCommand { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000a)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000a)] set; }
/// <summary>Looks for the target of a Shell link, even if the target has been moved or renamed.</summary>
/// <param name="fFlags">
/// <para>Type: <c>Integer</c></para>
/// <para>Flags that specify the action to be taken. This can be a combination of the following values:</para>
/// <list type="bullet">
/// <item>
/// (1)Do not display a dialog box if the link cannot be resolved. When this flag is set, the high-order word of fFlags specifies
/// a time-out duration, in milliseconds. The method returns if the link cannot be resolved within the time-out duration. If the
/// high-order word is set to zero, the time-out duration defaults to 3000 milliseconds (3 seconds).
/// </item>
/// <item>(4)If the link has changed, update its path and list of identifiers.</item>
/// <item>(8)Do not update the link information.</item>
/// <item>(16)Do not execute the search heuristics.</item>
/// <item>(32)Do not use distributed link tracking.</item>
/// <item>
/// (64)Disable distributed link tracking. By default, distributed link tracking tracks removable media across multiple devices
/// based on the volume name. It also uses the UNC path to track remote file systems whose drive letter has changed. Setting this
/// flag disables both types of tracking.
/// </item>
/// <item>(128)Call the Windows Installer.</item>
/// </list>
/// </param>
/// <remarks>
/// This method is essentially identical in functionality to <c>Resolve</c>. For further discussion of link resolution, see the
/// Remarks section of that page.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/shelllinkobject-resolve
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000c)]
void Resolve([In] int fFlags);
/// <summary>Gets the location of the icon assigned to the link.</summary>
/// <param name="sPath">When this method returns, it holds the fully qualified path of the file that contains the icon.</param>
/// <returns>Returns the icon's index in the file specified by sPath.</returns>
// https://docs.microsoft.com/en-us/windows/win32/shell/shelllinkobject-geticonlocation
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000d)]
int GetIconLocation([MarshalAs(UnmanagedType.BStr)] out string sPath);
/// <summary>Sets the location of the icon assigned to the link.</summary>
/// <param name="sPath">The fully qualified path of the file that contains the icon.</param>
/// <param name="iIndex">The index of the icon in the file specified by sPath.</param>
// https://docs.microsoft.com/en-us/windows/win32/shell/shelllinkobject-seticonlocation
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000e)]
void SetIconLocation([In, MarshalAs(UnmanagedType.BStr)] string sPath, [In] int iIndex);
/// <summary>Saves all changes to the link.</summary>
/// <param name="sFile">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// A string value that contains the fully qualified path of the file where the new link information is to be saved. If no file
/// is specified, the current file is used.
/// </para>
/// </param>
// https://docs.microsoft.com/en-us/windows/win32/shell/shelllinkobject-save
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000f)]
void Save([In, Optional, MarshalAs(UnmanagedType.Struct)] object sFile);
}
/// <summary>Extends the <c>ShellLinkObject</c> object and supports one additional property.</summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelllinkdual2-object
[PInvokeData("shldisp.h", MSDNShortId = "8a63552c-6bce-4583-8df8-a7f7731b35eb")]
[ComImport, Guid("317EE249-F12E-11D2-B1E4-00C04F8EEB3E"), CoClass(typeof(ShellLinkObject))]
public interface IShellLinkDual2 : IShellLinkDual
{
/// <summary>
/// <para>Gets or sets the path to the link object.</para>
/// <para>This property is read/write.</para>
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/shelllinkobject-path
[DispId(0x60020000)]
new string Path { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020000)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020000)] set; }
/// <summary>
/// <para>Gets or sets the description of the link.</para>
/// <para>This property is read/write.</para>
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/shelllinkobject-description
[DispId(0x60020002)]
new string Description { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020002)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020002)] set; }
/// <summary>
/// <para>Gets or sets the working directory specified in the link.</para>
/// <para>This property is read/write.</para>
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/shelllinkobject-workingdirectory
[DispId(0x60020004)]
new string WorkingDirectory { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020004)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020004)] set; }
/// <summary>
/// <para>Contains a link's arguments.</para>
/// <para>This property is read/write.</para>
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/shelllinkobject-arguments
[DispId(0x60020006)]
new string Arguments { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020006)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020006)] set; }
/// <summary>
/// <para>Gets or sets the keyboard shortcut for the link.</para>
/// <para>This property is read/write.</para>
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/shelllinkobject-hotkey
[DispId(0x60020008)]
new int Hotkey { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020008)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020008)] set; }
/// <summary>
/// <para>Gets or sets the initial display state (sized, minimized, or maximized) of the link's command.</para>
/// <para>This property is read/write.</para>
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/shelllinkobject-showcommand
[DispId(0x6002000a)]
new int ShowCommand { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000a)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000a)] set; }
/// <summary>Looks for the target of a Shell link, even if the target has been moved or renamed.</summary>
/// <param name="fFlags">
/// <para>Type: <c>Integer</c></para>
/// <para>Flags that specify the action to be taken. This can be a combination of the following values:</para>
/// <list type="bullet">
/// <item>
/// (1)Do not display a dialog box if the link cannot be resolved. When this flag is set, the high-order word of fFlags specifies
/// a time-out duration, in milliseconds. The method returns if the link cannot be resolved within the time-out duration. If the
/// high-order word is set to zero, the time-out duration defaults to 3000 milliseconds (3 seconds).
/// </item>
/// <item>(4)If the link has changed, update its path and list of identifiers.</item>
/// <item>(8)Do not update the link information.</item>
/// <item>(16)Do not execute the search heuristics.</item>
/// <item>(32)Do not use distributed link tracking.</item>
/// <item>
/// (64)Disable distributed link tracking. By default, distributed link tracking tracks removable media across multiple devices
/// based on the volume name. It also uses the UNC path to track remote file systems whose drive letter has changed. Setting this
/// flag disables both types of tracking.
/// </item>
/// <item>(128)Call the Windows Installer.</item>
/// </list>
/// </param>
/// <remarks>
/// This method is essentially identical in functionality to <c>Resolve</c>. For further discussion of link resolution, see the
/// Remarks section of that page.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/shelllinkobject-resolve
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000c)]
new void Resolve([In] int fFlags);
/// <summary>Gets the location of the icon assigned to the link.</summary>
/// <param name="sPath">When this method returns, it holds the fully qualified path of the file that contains the icon.</param>
/// <returns>Returns the icon's index in the file specified by sPath.</returns>
// https://docs.microsoft.com/en-us/windows/win32/shell/shelllinkobject-geticonlocation
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000d)]
new int GetIconLocation([MarshalAs(UnmanagedType.BStr)] out string sPath);
/// <summary>Sets the location of the icon assigned to the link.</summary>
/// <param name="sPath">The fully qualified path of the file that contains the icon.</param>
/// <param name="iIndex">The index of the icon in the file specified by sPath.</param>
// https://docs.microsoft.com/en-us/windows/win32/shell/shelllinkobject-seticonlocation
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000e)]
new void SetIconLocation([In, MarshalAs(UnmanagedType.BStr)] string sPath, [In] int iIndex);
/// <summary>Saves all changes to the link.</summary>
/// <param name="sFile">
/// <para>Type: <c>Variant</c></para>
/// <para>
/// A string value that contains the fully qualified path of the file where the new link information is to be saved. If no file
/// is specified, the current file is used.
/// </para>
/// </param>
// https://docs.microsoft.com/en-us/windows/win32/shell/shelllinkobject-save
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6002000f)]
new void Save([In, Optional, MarshalAs(UnmanagedType.Struct)] object sFile);
/// <summary>Contains the link object's target.</summary>
/// <value>An object expression that evaluates to the target's FolderItem object.</value>
[DispId(0x60030000)]
FolderItem Target { [return: MarshalAs(UnmanagedType.Interface)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60030000)] get; }
}
/// <summary>Exposes methods that enable HTML pages which are hosted in a wizard extension to communicate with the wizard.</summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/webwizardhost
[PInvokeData("shldisp.h", MSDNShortId = "7b3690dc-2007-43a0-80a3-4a68e3c8464d")]
[ComImport, Guid("18BCC359-4990-4BFB-B951-3C83702BE5F9")]
public interface IWebWizardHost
{
/// <summary>Navigates to the client-side page immediately preceding the page hosting the server-side HTML pages.</summary>
/// <remarks>
/// When the wizard displays the first server-side page and the user clicks the <c>Back</c> button, the server invokes
/// <c>FinalBack</c> when notified of that event by the client's event handler.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/iwebwizardhost-finalback
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0)]
void FinalBack();
/// <summary>
/// Navigates to the client-side wizard page that follows the page that hosts the server-side HTML pages, or finishes the wizard
/// if there are no further client-side pages.
/// </summary>
/// <remarks>
/// When the wizard is displaying the last server-side HTML page and the user clicks the <c>Next</c> or <c>Finish</c> button, the
/// server invokes <c>FinalNext</c> in that button's event handler.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/iwebwizardhost-finalnext
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(1)]
void FinalNext();
/// <summary>Simulates a <c>Cancel</c> button click.</summary>
/// <remarks>The client is responsible for responding to this method with the expected behavior by closing the wizard.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/iwebwizardhost-cancel
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(2)]
void Cancel();
/// <summary>This property is not implemented.</summary>
// https://docs.microsoft.com/en-us/previous-versions/windows/desktop/legacy/bb774352(v=vs.85)
[DispId(3)]
string Caption { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(3)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(3)] set; }
/// <summary>Sets or retrieves a property's current value.</summary>
/// <value>The property value.</value>
/// <param name="bstrPropertyName">Name of the property.</param>
[DispId(4)]
object this[string bstrPropertyName] { [return: MarshalAs(UnmanagedType.Struct)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(4)] get; [param: In, MarshalAs(UnmanagedType.Struct)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(4)] set; }
/// <summary>Updates the <c>Back</c>, <c>Next</c>, and <c>Finish</c> buttons in the client's wizard frame.</summary>
/// <param name="vfEnableBack">Enables the <c>Back</c> button.</param>
/// <param name="vfEnableNext">Enables the <c>Next</c> button.</param>
/// <param name="vfLastPage">Enables the <c>Finish</c> button. States that this is the last server-side page.</param>
/// <remarks>
/// Be sure to implement handler functions in each server-side page for OnBack() and OnNext(), corresponding to the wizard
/// buttons <c>Back</c> and <c>Next</c>. The OnBack() and OnNext() functions respond to <c>SetWizardButtons</c>. At the
/// appropriate time, the OnNext() function calls <c>SetWizardButtons</c> with vbLastPage= <c>true</c>, which can enable a
/// <c>Finish</c> button. OnNext() also calls <c>FinalNext</c> when a user clicks the <c>Finish</c> button.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/iwebwizardhost-setwizardbuttons
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(5)]
void SetWizardButtons([In] bool vfEnableBack, [In] bool vfEnableNext, [In] bool vfLastPage);
/// <summary>
/// Sets the title and subtitle that appear in the wizard header. In general, the client will display the header above the HTML
/// and below the title bar.
/// </summary>
/// <param name="bstrHeaderTitle">String containing the title.</param>
/// <param name="bstrHeaderSubtitle">String containing the subtitle.</param>
// https://docs.microsoft.com/en-us/windows/win32/shell/iwebwizardhost-setheadertext
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(6)]
void SetHeaderText([In, MarshalAs(UnmanagedType.BStr)] string bstrHeaderTitle, [In, MarshalAs(UnmanagedType.BStr)] string bstrHeaderSubtitle);
}
/// <summary>Undocumented.</summary>
/// <seealso cref="Vanara.PInvoke.Shell32.IWebWizardHost"/>
[PInvokeData("shldisp.h")]
[ComImport, Guid("F9C013DC-3C23-4041-8E39-CFB402F7EA59")]
public interface IWebWizardHost2 : IWebWizardHost
{
/// <summary>Navigates to the client-side page immediately preceding the page hosting the server-side HTML pages.</summary>
/// <remarks>
/// When the wizard displays the first server-side page and the user clicks the <c>Back</c> button, the server invokes
/// <c>FinalBack</c> when notified of that event by the client's event handler.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/iwebwizardhost-finalback
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0)]
new void FinalBack();
/// <summary>
/// Navigates to the client-side wizard page that follows the page that hosts the server-side HTML pages, or finishes the wizard
/// if there are no further client-side pages.
/// </summary>
/// <remarks>
/// When the wizard is displaying the last server-side HTML page and the user clicks the <c>Next</c> or <c>Finish</c> button, the
/// server invokes <c>FinalNext</c> in that button's event handler.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/iwebwizardhost-finalnext
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(1)]
new void FinalNext();
/// <summary>Simulates a <c>Cancel</c> button click.</summary>
/// <remarks>The client is responsible for responding to this method with the expected behavior by closing the wizard.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/iwebwizardhost-cancel
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(2)]
new void Cancel();
/// <summary>This property is not implemented.</summary>
// https://docs.microsoft.com/en-us/previous-versions/windows/desktop/legacy/bb774352(v=vs.85)
[DispId(3)]
new string Caption { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(3)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(3)] set; }
/// <summary>Sets or retrieves a property's current value.</summary>
/// <value>The property value.</value>
/// <param name="bstrPropertyName">Name of the property.</param>
[DispId(4)]
new object this[string bstrPropertyName] { [return: MarshalAs(UnmanagedType.Struct)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(4)] get; [param: In, MarshalAs(UnmanagedType.Struct)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(4)] set; }
/// <summary>Updates the <c>Back</c>, <c>Next</c>, and <c>Finish</c> buttons in the client's wizard frame.</summary>
/// <param name="vfEnableBack">Enables the <c>Back</c> button.</param>
/// <param name="vfEnableNext">Enables the <c>Next</c> button.</param>
/// <param name="vfLastPage">Enables the <c>Finish</c> button. States that this is the last server-side page.</param>
/// <remarks>
/// Be sure to implement handler functions in each server-side page for OnBack() and OnNext(), corresponding to the wizard
/// buttons <c>Back</c> and <c>Next</c>. The OnBack() and OnNext() functions respond to <c>SetWizardButtons</c>. At the
/// appropriate time, the OnNext() function calls <c>SetWizardButtons</c> with vbLastPage= <c>true</c>, which can enable a
/// <c>Finish</c> button. OnNext() also calls <c>FinalNext</c> when a user clicks the <c>Finish</c> button.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/shell/iwebwizardhost-setwizardbuttons
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(5)]
new void SetWizardButtons([In] bool vfEnableBack, [In] bool vfEnableNext, [In] bool vfLastPage);
/// <summary>
/// Sets the title and subtitle that appear in the wizard header. In general, the client will display the header above the HTML
/// and below the title bar.
/// </summary>
/// <param name="bstrHeaderTitle">String containing the title.</param>
/// <param name="bstrHeaderSubtitle">String containing the subtitle.</param>
// https://docs.microsoft.com/en-us/windows/win32/shell/iwebwizardhost-setheadertext
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(6)]
new void SetHeaderText([In, MarshalAs(UnmanagedType.BStr)] string bstrHeaderTitle, [In, MarshalAs(UnmanagedType.BStr)] string bstrHeaderSubtitle);
/// <summary>Undocumented.</summary>
[return: MarshalAs(UnmanagedType.BStr)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(7)]
string SignString([In, MarshalAs(UnmanagedType.BStr)] string Value);
}
/// <summary>An autocomplete object (CLSID_AutoComplete).</summary>
[ComImport, SuppressUnmanagedCodeSecurity, Guid("00BB2763-6A77-11D0-A535-00C04FD7D062"), ClassInterface(ClassInterfaceType.None)]
public class CAutoComplete { }
/// <summary>Undocumented.</summary>
[ComImport, Guid("C4EE31F3-4768-11D2-BE5C-00A0C9A83DA1"), ClassInterface(ClassInterfaceType.None)]
public class FileSearchBand { }
/// <summary>
/// Represents the objects in the Shell. Methods are provided to control the Shell and to execute commands within the Shell. There
/// are also methods to obtain other Shell-related objects.
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/shell
[PInvokeData("shldisp.h", MSDNShortId = "75fc151e-5b9e-476b-b4e5-b848917357a8")]
[ComImport, ClassInterface(ClassInterfaceType.None), Guid("13709620-C279-11CE-A49E-444553540000")]
public class Shell { }
/// <summary>
/// Represents an object in the Shell. Methods are provided to control the Shell and to execute commands within the Shell. There are
/// also methods to obtain other Shell-related objects.
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/ishelldispatch
[PInvokeData("shldisp.h", MSDNShortId = "9B429C03-7F80-45db-B8CD-58D19FAD2E61")]
[ComImport, ClassInterface(ClassInterfaceType.None), Guid("0A89A860-D7B1-11CE-8350-444553540000")]
public class ShellDispatchInproc { }
/// <summary>
/// Extends the <c>FolderItem</c> object. In addition to the properties and methods supported by <c>FolderItem</c>,
/// <c>ShellFolderItem</c> has two additional methods.
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderitem-object
[PInvokeData("shldisp.h", MSDNShortId = "0e2f4c91-f9f9-4daa-a801-9c7fea8af738")]
[ComImport, Guid("2FE352EA-FD1F-11D2-B1F4-00C04F8EEB3E"), ClassInterface(ClassInterfaceType.None)]
public class ShellFolderItem { }
/// <summary>
/// Represents the objects in a view and provides properties and methods used to obtain information about the contents of the view.
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview
[PInvokeData("shldisp.h", MSDNShortId = "3b866266-fee0-42f7-a1e0-9adb6cc2e23f")]
[ComImport, Guid("62112AA1-EBE4-11CF-A5FB-0020AFE7292D"), ClassInterface(ClassInterfaceType.None)]
public class ShellFolderView { }
/// <summary>
/// Represents the objects in a view and provides properties and methods used to obtain information about the contents of the view.
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/shellfolderview
[PInvokeData("shldisp.h", MSDNShortId = "3b866266-fee0-42f7-a1e0-9adb6cc2e23f")]
[ComImport, Guid("9BA05971-F6A8-11CF-A442-00A0C90A8F39"), ClassInterface(ClassInterfaceType.None)]
public class ShellFolderViewOC { }
/// <summary>
/// Manages Shell links. This object makes much of the functionality of the <c>IShellLink</c> interface available to scripting applications.
/// </summary>
// https://docs.microsoft.com/en-us/windows/win32/shell/shelllinkobject-object
[PInvokeData("", MSDNShortId = "d3c0ccf8-0f83-42f7-9d6f-1fb293da6364")]
[ComImport, Guid("11219420-1768-11D1-95BE-00609797EA4F"), ClassInterface(ClassInterfaceType.None)]
public class ShellLinkObject { }
}
2018-03-26 15:18:42 -04:00
}