Unit MyShlObj

*****************************************************} { } { Delphi Runtime Library } { Windows 32bit API Interface Unit } { } { Copyright (c) 1996 Borland International } { } {

Classes

IContextMenu -
ICopyHook - ICopyHook Interface } { The copy hook is called whenever file system directories are copy/moved/deleted/renamed via the shell.
IEnumIDList - IEnumIDList interface } { IShellFolder.
IExtractIcon - this icon should not be cached
IFileViewer - The viewer can view it.
IFileViewerSite - IFileViewerSite Interface
IShellExtInit - Interface: IShellExtInit } { The IShellExtInit interface is used by the explorer to initialize shell extension objects.
IShellFolder - is this removeable media?
IShellLink -
IShellPropSheetExt - =========================================================================== } { Interface: IShellPropSheetExt } { The explorer uses the IShellPropSheetExt to allow property sheet extensions or control panel extensions to add additional property sheet pages.

Functions

SHAddToRecentDocs -
SHBrowseForFolder -
SHChangeNotify - APIs
SHGetDataFromIDList -
SHGetDataFromIDListA - ???
SHGetDataFromIDListW -
SHGetDesktopFolder - Helper function which returns a IShellFolder interface to the desktop folder.
SHGetInstanceExplorer -
SHGetMalloc - Task allocator API } { All the shell extensions MUST use the task allocator (see OLE 2.
SHGetPathFromIDList - SHGetPathFromIDList } { This function assumes the size of the buffer (MAX_PATH).
SHGetSpecialFolderLocation -
SHLoadInProc - SHLoadInProc } { When this function is called, the shell calls CoCreateInstance (or equivalent) with CLSCTX_INPROC_SERVER and the specified CLSID from within the shell's process and release it immediately.

Types

PBrowseInfo
PCMInvokeCommandInfo
PDropFiles
PFileDescriptor
PFileGroupDescriptor
PFVShowInfo
PIDA
PItemIDList
PNResArray
PSHItemID
PSTRRet
TBrowseInfo
TCMInvokeCommandInfo
TDropFiles
TFileDescriptor
TFileGroupDescriptor
TFNBFFCallBack
TFVShowInfo
TIDA
TItemIDList
TNResArray
TSHDescriptionID
TSHItemID
TStrRet

Constants

BFFM_ENABLEOK
BFFM_INITIALIZED
BFFM_SELCHANGED
BFFM_SETSELECTION
BFFM_SETSTATUSTEXT
BIF_BROWSEFORCOMPUTER
BIF_BROWSEFORPRINTER
BIF_BROWSEINCLUDEFILES
BIF_DONTGOBELOWDOMAIN
BIF_RETURNFSANCESTORS
BIF_RETURNONLYFSDIRS
BIF_STATUSTEXT
CFSTR_FILECONTENTS
CFSTR_FILEDESCRIPTOR
CFSTR_FILENAME
CFSTR_FILENAMEMAP
CFSTR_NETRESOURCES
CFSTR_PRINTERGROUP
CFSTR_SHELLIDLIST
CFSTR_SHELLIDLISTOFFSET
CLSID_ShellDesktop
CLSID_ShellLink
CMDSTR_NEWFOLDER
CMDSTR_VIEWDETAILS
CMDSTR_VIEWLIST
CMF_DEFAULTONLY
CMF_EXPLORE
CMF_NORMAL
CMF_RESERVED
CMF_VERBSONLY
CMIC_MASK_FLAG_NO_UI
CMIC_MASK_HOTKEY
CMIC_MASK_ICON
CMIC_MASK_MODAL
CSIDL_BITBUCKET
CSIDL_CONTROLS
CSIDL_DESKTOP
CSIDL_DESKTOPDIRECTORY
CSIDL_DRIVES
CSIDL_FAVORITES
CSIDL_FONTS
CSIDL_NETHOOD
CSIDL_NETWORK
CSIDL_PERSONAL
CSIDL_PRINTERS
CSIDL_PROGRAMS
CSIDL_RECENT
CSIDL_SENDTO
CSIDL_STARTMENU
CSIDL_STARTUP
CSIDL_TEMPLATES
DVASPECT_SHORTNAME
FD_ACCESSTIME
FD_ATTRIBUTES
FD_CLSID
FD_CREATETIME
FD_FILESIZE
FD_LINKUI
FD_SIZEPOINT
FD_WRITESTIME
FVSIF_CANVIEWIT
FVSIF_NEWFAILED
FVSIF_NEWFILE
FVSIF_PINNED
FVSIF_RECT
GCS_HELPTEXT
GCS_VALIDATE
GCS_VERB
GIL_DONTCACHE
GIL_FORSHELL
GIL_NOTFILENAME
GIL_OPENICON
GIL_PERCLASS
GIL_PERINSTANCE
GIL_SIMULATEDOC
IID_IContextMenu
IID_IEnumIDList
IID_IExtractIcon
IID_IFileViewer
IID_IFileViewerSite
IID_IShellCopyHook
IID_IShellExtInit
IID_IShellFolder
IID_IShellLink
IID_IShellPropSheetExt
REGSTR_PATH_SPECIAL_FOLDERS
SFGAO_CANCOPY
SFGAO_CANDELETE
SFGAO_CANLINK
SFGAO_CANMOVE
SFGAO_CANRENAME
SFGAO_CAPABILITYMASK
SFGAO_CONTENTSMASK
SFGAO_DISPLAYATTRMASK
SFGAO_DROPTARGET
SFGAO_FILESYSANCESTOR
SFGAO_FILESYSTEM
SFGAO_FOLDER
SFGAO_GHOSTED
SFGAO_HASPROPSHEET
SFGAO_HASSUBFOLDER
SFGAO_LINK
SFGAO_READONLY
SFGAO_REMOVABLE
SFGAO_SHARE
SFGAO_VALIDATE
SHARD_PATH
SHARD_PIDL
SHCNE_ALLEVENTS
SHCNE_ASSOCCHANGED
SHCNE_ATTRIBUTES
SHCNE_CREATE
SHCNE_DELETE
SHCNE_DISKEVENTS
SHCNE_DRIVEADD
SHCNE_DRIVEADDGUI
SHCNE_DRIVEREMOVED
SHCNE_FREESPACE
SHCNE_GLOBALEVENTS
SHCNE_INTERRUPT
SHCNE_MEDIAINSERTED
SHCNE_MEDIAREMOVED
SHCNE_MKDIR
SHCNE_NETSHARE
SHCNE_NETUNSHARE
SHCNE_RENAMEFOLDER
SHCNE_RENAMEITEM
SHCNE_RMDIR
SHCNE_SERVERDISCONNECT
SHCNE_UPDATEDIR
SHCNE_UPDATEIMAGE
SHCNE_UPDATEITEM
SHCNF_DWORD
SHCNF_FLUSH
SHCNF_FLUSHNOWAIT
SHCNF_IDLIST
SHCNF_PATH
SHCNF_PRINTER
SHCNF_TYPE
SHCONTF_FOLDERS
SHCONTF_INCLUDEHIDDEN
SHCONTF_NONFOLDERS
SHDID_COMPUTER_CDROM
SHDID_COMPUTER_DRIVE35
SHDID_COMPUTER_DRIVE525
SHDID_COMPUTER_FIXED
SHDID_COMPUTER_NETDRIVE
SHDID_COMPUTER_OTHER
SHDID_COMPUTER_RAMDISK
SHDID_COMPUTER_REMOVABLE
SHDID_FS_DIRECTORY
SHDID_FS_FILE
SHDID_FS_OTHER
SHDID_NET_DOMAIN
SHDID_NET_OTHER
SHDID_NET_RESTOFNET
SHDID_NET_SERVER
SHDID_NET_SHARE
SHDID_ROOT_REGITEM
SHGDFIL_DESCRIPTIONID
SHGDFIL_FINDDATA
SHGDFIL_NETRESOURCE
SHGDN_FORPARSING
SHGDN_INFOLDER
SHGDN_NORMAL
SLGP_SHORTPATH
SLGP_UNCPRIORITY
SLR_ANY_MATCH
SLR_NO_UI
SLR_UPDATE
STRRET_CSTR
STRRET_OFFSET
STRRET_WSTR

Variables


Functions


procedure SHAddToRecentDocs(uFlags: UINT; pv: Pointer);


function SHBrowseForFolder(var lpbi: TBrowseInfo): PItemIDList;


procedure SHChangeNotify(wEventId: Longint; uFlags: UINT; dwItem1, dwItem2: Pointer);

APIs

function SHGetDataFromIDList(const psf: IShellFolder; pidl: PItemIDList; nFormat: integer; var pv; cb: integer): HResult;


function SHGetDataFromIDListA(const psf: IShellFolder; pidl: PItemIDList; nFormat: integer; var pv; cb: integer): HResult;

???

function SHGetDataFromIDListW(const psf: IShellFolder; pidl: PItemIDList; nFormat: integer; var pv; cb: integer): HResult;


function SHGetDesktopFolder(var ppshf: IShellFolder): HResult;

Helper function which returns a IShellFolder interface to the desktop folder. This is equivalent to call CoCreateInstance with CLSID_ShellDesktop.

function SHGetInstanceExplorer(var ppUnk: IUnknown): HResult;


function SHGetMalloc(var ppMalloc: IMalloc): HResult;

Task allocator API } { All the shell extensions MUST use the task allocator (see OLE 2.0 programming guild for its definition) when they allocate or free memory objects (mostly ITEMIDLIST) that are returned across any shell interfaces. There are two ways to access the task allocator from a shell extension depending on whether or not it is linked with OLE32.DLL or not (virtual; stdcall; abstractly for efficiency). (1) A shell extension which calls any OLE API (i.e., linked with OLE32.DLL) should call OLE's task allocator (by retrieving the task allocator by calling CoGetMalloc API). (2) A shell extension which does not call any OLE API (i.e., not linked with OLE32.DLL) should call the shell task allocator API (defined below), so that the shell can quickly loads it when OLE32.DLL is not loaded by any application at that point. } { !!! Notes: In next version of Windowso release, SHGetMalloc will be replaced by the following macro. #define SHGetMalloc(ppmem) CoGetMalloc(MEMCTX_TASK, ppmem) } // !!! function SHGetMalloc(var ppMalloc: IMalloc): HResult;

function SHGetPathFromIDList(pidl: PItemIDList; pszPath: LPSTR): BOOL;

SHGetPathFromIDList } { This function assumes the size of the buffer (MAX_PATH). The pidl should point to a file system object.

function SHGetSpecialFolderLocation(hwndOwner: HWND; nFolder: Integer; var ppidl: PItemIDList): HResult;


function SHLoadInProc(rclsid: TCLSID): HRESULT;

SHLoadInProc } { When this function is called, the shell calls CoCreateInstance (or equivalent) with CLSCTX_INPROC_SERVER and the specified CLSID from within the shell's process and release it immediately.

Types


PBrowseInfo = ^TBrowseInfo

PCMInvokeCommandInfo = ^TCMInvokeCommandInfo
Internal } // CMIC_VALID_SEE_FLAGS = !!! not found -> SEE_VALID_CMIC_FLAGS; ( Internal
PDropFiles = ^TDropFiles
format of CF_HDROP and CF_PRINTERS, in the HDROP case the data that follows is a double null terinated list of file names, for printers they are printer friendly names
PFileDescriptor = ^TFileDescriptor
'link' UI is prefered
PFileGroupDescriptor = ^TFileGroupDescriptor
format of CF_FILEGROUPDESCRIPTOR
PFVShowInfo = ^TFVShowInfo
IFileViewer Interface } { Implemented in a FileViewer component object. Used to tell a FileViewer to PrintTo or to view, the latter happening though ShowInitialize and Show. The filename is always given to the viewer through IPersistFile.
PIDA = ^TIDA
format of CF_IDLIST
PItemIDList = ^TItemIDList
TItemIDList -- List if item IDs (combined with 0-terminator)
PNResArray = ^TNResArray
format of CF_NETRESOURCE
PSHItemID = ^TSHItemID
TSHItemID -- Item ID
PSTRRet = ^TStrRet
record for returning strings from IShellFolder member functions
TBrowseInfo = record
hwndOwner : HWND;
pidlRoot : PItemIDList;
pszDisplayName : LPSTR;
lpszTitle : LPCSTR;
ulFlags : UINT;
lpfn : TFNBFFCallBack;
lParam : LPARAM;
iImage : Integer;
end;

TCMInvokeCommandInfo = record
cbSize : DWORD;
fMask : DWORD;
hwnd : HWND;
lpVerb : LPCSTR;
lpParameters : LPCSTR;
lpDirectory : LPCSTR;
nShow : Integer;
dwHotKey : DWORD;
hIcon : THandle;
end;

TDropFiles = record
pFiles : DWORD;
pt : TPoint;
fNC : BOOL;
fWide : BOOL;
end;

TFileDescriptor = record
dwFlags : DWORD;
clsid : TCLSID;
sizel : TSize;
pointl : TPoint;
dwFileAttributes : DWORD;
ftCreationTime : TFileTime;
ftLastAccessTime : TFileTime;
ftLastWriteTime : TFileTime;
nFileSizeHigh : DWORD;
nFileSizeLow : DWORD;
cFileName : array[0..MAX_PATH-1] of Char;
end;

TFileGroupDescriptor = record
cItems : UINT;
fgd : array[0..0] of TFileDescriptor;
end;

TFNBFFCallBack = function(Wnd: HWND; uMsg: UINT; lParam, lpData: LPARAM): Integer stdcall
SHBrowseForFolder API
TFVShowInfo = record
cbSize : DWORD;
hwndOwner : HWND;
iShow : Integer;
dwFlags : DWORD;
rect : TRECT;
punkRel : IUNKNOWN;
strNewFile : array[0..MAX_PATH-1] of TOleChar;
end;

TIDA = record
cidl : UINT;
aoffset : array[0..0] of UINT;
end;

TItemIDList = record
mkid : TSHItemID;
end;

TNResArray = record
cItems : UINT;
nr : array[0..0] of TNetResource;
end;

TSHDescriptionID = record
dwDescriptionId : DWORD;
clsid : TGUID;
end;

TSHItemID = record
cb : Word;
abID : array[0..0] of Byte;
end;

TStrRet = record
uType : UINT;
end;

Constants

BFFM_ENABLEOK = (WM_USER + 101)

BFFM_INITIALIZED = 1

Browsing for Everything } { message from browser

BFFM_SELCHANGED = 2

BFFM_SETSELECTION = (WM_USER + 102)

BFFM_SETSTATUSTEXT = (WM_USER + 100)

messages to browser

BIF_BROWSEFORCOMPUTER = $1000 { Browsing for Computers }

BIF_BROWSEFORPRINTER = $2000 { Browsing for Printers }

Browsing for Computers

BIF_BROWSEINCLUDEFILES = $4000

Browsing for Printers

BIF_DONTGOBELOWDOMAIN = $0002 { For starting the Find Computer }

For finding a folder to start document searching

BIF_RETURNFSANCESTORS = $0008

BIF_RETURNONLYFSDIRS = $0001 { For finding a folder to start document searching }

Browsing for directory

BIF_STATUSTEXT = $0004

For starting the Find Computer

CFSTR_FILECONTENTS = 'FileContents'

CF_FILEGROUPDESCRIPTOR

CFSTR_FILEDESCRIPTOR = 'FileGroupDescriptor'

CF_NETRESOURCE

CFSTR_FILENAME = 'FileName'

CF_FILECONTENTS

CFSTR_FILENAMEMAP = 'FileNameMap'

CF_PRINTERS

CFSTR_NETRESOURCES = 'Net Resource'

CF_OBJECTPOSITIONS

CFSTR_PRINTERGROUP = 'PrinterFriendlyName'

CF_FILENAME

CFSTR_SHELLIDLIST = 'Shell IDList Array'

Clipboard format which may be supported by IDataObject from system defined shell folders (such as directories, network, ...).

CFSTR_SHELLIDLISTOFFSET = 'Shell Object Offsets'

CF_IDLIST

CLSID_ShellDesktop = ( D1:$00021400; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46))

Object identifiers in the explorer's name space (ItemID and IDList) All the items that the user can browse with the explorer (such as files, directories, servers, work-groups, etc.) has an identifier which is unique among items within the parent folder. Those identifiers are called item IDs (SHITEMID). Since all its parent folders have their own item IDs, any items can be uniquely identified by a list of item IDs, which is called an ID list (ITEMIDLIST). ID lists are almost always allocated by the task allocator (see some description below as well as OLE 2.0 SDK) and may be passed across some of shell interfaces (such as IShellFolder). Each item ID in an ID list is only meaningful to its parent folder (which has generated it), and all the clients must treat it as an opaque binary data except the first two bytes, which indicates the size of the item ID. When a shell extension -- which implements the IShellFolder interace -- generates an item ID, it may put any information in it, not only the data with that it needs to identifies the item, but also some additional information, which would help implementing some other functions efficiently. For example, the shell's IShellFolder implementation of file system items stores the primary (long) name of a file or a directory as the item identifier, but it also stores its alternative (short) name, size and date etc. When an ID list is passed to one of shell APIs (such as SHGetPathFromIDList), it is always an absolute path -- relative from the root of the name space, which is the desktop folder. When an ID list is passed to one of IShellFolder member function, it is always a relative path from the folder (unless it is explicitly specified).

CLSID_ShellLink = ( D1:$00021401; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46))

CMDSTR_NEWFOLDER = 'NewFolder'

validate command exists

CMDSTR_VIEWDETAILS = 'ViewDetails'

CMDSTR_VIEWLIST = 'ViewList'

CMF_DEFAULTONLY = $00000001

CMF_EXPLORE = $00000004

CMF_NORMAL = $00000000

QueryContextMenu uFlags

CMF_RESERVED = $FFFF0000

CMF_VERBSONLY = $00000002

CMIC_MASK_FLAG_NO_UI = SEE_MASK_FLAG_NO_UI

CMIC_MASK_HOTKEY = SEE_MASK_HOTKEY

CMIC_MASK_ICON = SEE_MASK_ICON

CMIC_MASK_MODAL = $80000000

CSIDL_BITBUCKET = $000A

CSIDL_CONTROLS = $0003

CSIDL_DESKTOP = $0000

CSIDL_DESKTOPDIRECTORY = $0010

CSIDL_DRIVES = $0011

CSIDL_FAVORITES = $0006

CSIDL_FONTS = $0014

CSIDL_NETHOOD = $0013

CSIDL_NETWORK = $0012

CSIDL_PERSONAL = $0005

CSIDL_PRINTERS = $0004

CSIDL_PROGRAMS = $0002

CSIDL_RECENT = $0008

CSIDL_SENDTO = $0009

CSIDL_STARTMENU = $000B

CSIDL_STARTUP = $0007

CSIDL_TEMPLATES = $0015

DVASPECT_SHORTNAME = 2

CF_FILENAMEMAP } { CF_OBJECTPOSITIONS

FD_ACCESSTIME = $0010

FD_ATTRIBUTES = $0004

FD_CLSID = $0001

FILEDESCRIPTOR.dwFlags field indicate which fields are to be used

FD_CREATETIME = $0008

FD_FILESIZE = $0040

FD_LINKUI = $8000

FD_SIZEPOINT = $0002

FD_WRITESTIME = $0020

FVSIF_CANVIEWIT = $40000000

A new file to view has been returned

FVSIF_NEWFAILED = $08000000

We should Initialize pinned

FVSIF_NEWFILE = $80000000

The new file passed back failed to be viewed.

FVSIF_PINNED = $00000002

The rect variable has valid data.

FVSIF_RECT = $00000001

Define File View Show Info Flags.

GCS_HELPTEXT = $00000001

canonical verb

GCS_VALIDATE = $00000002

help text (for status bar)

GCS_VERB = $00000000

View specific } { GetCommandString uFlags

GIL_DONTCACHE = $0010 { this icon should not be cached }

location is not a filename, must call .Extract

GIL_FORSHELL = $0002 { icon is to be displayed in a ShellFolder }

allows containers to specify an 'open' look

GIL_NOTFILENAME = $0008 { location is not a filename, must call .Extract }

icons from this class per class (shared for all files of this type)

GIL_OPENICON = $0001 { allows containers to specify an 'open' look }

GetIconLocation() input flags

GIL_PERCLASS = $0004 { icons from this class per class (shared for all files of this type) }

icons from this class are per instance (each file has its own)

GIL_PERINSTANCE = $0002 { icons from this class are per instance (each file has its own) }

simulate this document icon for this

GIL_SIMULATEDOC = $0001 { simulate this document icon for this }

GetIconLocation() return flags

IID_IContextMenu = ( D1:$000214E4; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46))

IID_IEnumIDList = ( D1:$000214F2; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46))

IID_IExtractIcon = ( D1:$000214EB; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46))

IID_IFileViewer = ( D1:$000214F0; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46))

IID_IFileViewerSite = ( D1:$000214F3; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46))

IID_IShellCopyHook = ( D1:$000214EF; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46))

IID_IShellExtInit = ( D1:$000214E8; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46))

IID_IShellFolder = ( D1:$000214E6; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46))

IID_IShellLink = ( D1:$000214EE; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46))

IID_IShellPropSheetExt = ( D1:$000214E9; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46))

REGSTR_PATH_SPECIAL_FOLDERS = REGSTR_PATH_EXPLORER + '\Shell Folders'

registry entries for special paths are kept in :

SFGAO_CANCOPY = DROPEFFECT_COPY

for hidden/system objects } { IShellFolder.GetAttributesOf flags

SFGAO_CANDELETE = $00000020

Objects can be renamed

SFGAO_CANLINK = DROPEFFECT_LINK

Objects can be moved

SFGAO_CANMOVE = DROPEFFECT_MOVE

Objects can be copied

SFGAO_CANRENAME = $00000010

Objects can be linked

SFGAO_CAPABILITYMASK = $00000177

Objects are drop target

SFGAO_CONTENTSMASK = $80000000

Expandable in the map pane

SFGAO_DISPLAYATTRMASK = $000F0000

ghosted icon

SFGAO_DROPTARGET = $00000100

Objects have property sheets

SFGAO_FILESYSANCESTOR = $10000000

SFGAO_FILESYSTEM = $40000000

It's a folder.

SFGAO_FOLDER = $20000000

It contains file system folder

SFGAO_GHOSTED = $00080000

read-only

SFGAO_HASPROPSHEET = $00000040

Objects can be deleted

SFGAO_HASSUBFOLDER = $80000000

is a file system thing (file/folder/root)

SFGAO_LINK = $00010000

SFGAO_READONLY = $00040000

shared

SFGAO_REMOVABLE = $02000000

invalidate cached information

SFGAO_SHARE = $00020000

Shortcut (link)

SFGAO_VALIDATE = $01000000

SHARD_PATH = $00000002

SHARD_PIDL = $00000001

SHAddToRecentDocs

SHCNE_ALLEVENTS = $7FFFFFFF

Events that dont match pidls first

SHCNE_ASSOCCHANGED = $08000000

SHCNE_ATTRIBUTES = $00000800

SHCNE_CREATE = $00000002

SHCNE_DELETE = $00000004

SHCNE_DISKEVENTS = $0002381F

SHCNE_DRIVEADD = $00000100

SHCNE_DRIVEADDGUI = $00010000

SHCNE_DRIVEREMOVED = $00000080

SHCNE_FREESPACE = $00040000

SHCNE_GLOBALEVENTS = $0C0581E0

SHCNE_INTERRUPT = $80000000

SHCNE_MEDIAINSERTED = $00000020

SHCNE_MEDIAREMOVED = $00000040

SHCNE_MKDIR = $00000008

SHCNE_NETSHARE = $00000200

SHCNE_NETUNSHARE = $00000400

SHCNE_RENAMEFOLDER = $00020000

SHCNE_RENAMEITEM = $00000001

File System Notification flags

SHCNE_RMDIR = $00000010

SHCNE_SERVERDISCONNECT = $00004000

SHCNE_UPDATEDIR = $00001000

SHCNE_UPDATEIMAGE = $00008000

SHCNE_UPDATEITEM = $00002000

SHCNF_DWORD = $0003

printer friendly name

SHCNF_FLUSH = $1000

SHCNF_FLUSHNOWAIT = $2000

SHCNF_IDLIST = $0000

The presence of this flag indicates } { that the event was generated by an } { interrupt. It is stripped out before } { the clients of SHCNNotify_ see it. } { uFlags & SHCNF_TYPE is an ID which indicates what dwItem1 and dwItem2 mean

SHCNF_PATH = $0001

PItemIDList

SHCNF_PRINTER = $0002

path name

SHCNF_TYPE = $00FF

DWORD

SHCONTF_FOLDERS = 32

for ParseDisplayName or path } { IShellFolder.EnumObjects

SHCONTF_INCLUDEHIDDEN = 128

for default view

SHCONTF_NONFOLDERS = 64

for shell browser

SHDID_COMPUTER_CDROM = 10

SHDID_COMPUTER_DRIVE35 = 5

SHDID_COMPUTER_DRIVE525 = 6

SHDID_COMPUTER_FIXED = 8

SHDID_COMPUTER_NETDRIVE = 9

SHDID_COMPUTER_OTHER = 12

SHDID_COMPUTER_RAMDISK = 11

SHDID_COMPUTER_REMOVABLE = 7

SHDID_FS_DIRECTORY = 3

SHDID_FS_FILE = 2

SHDID_FS_OTHER = 4

SHDID_NET_DOMAIN = 13

SHDID_NET_OTHER = 17

SHDID_NET_RESTOFNET = 16

SHDID_NET_SERVER = 14

SHDID_NET_SHARE = 15

SHDID_ROOT_REGITEM = 1

SHGDFIL_DESCRIPTIONID = 3

SHGDFIL_FINDDATA = 1

SHGDFIL_NETRESOURCE = 2

SHGDN_FORPARSING = $8000

displayed under a folder (relative)

SHGDN_INFOLDER = 1

default (display purpose)

SHGDN_NORMAL = 0

IShellFolder.GetDisplayNameOf/SetNameOf uFlags

SLGP_SHORTPATH = $0001

IShellLink.GetPath fFlags

SLGP_UNCPRIORITY = $0002

SLR_ANY_MATCH = $0002

SLR_NO_UI = $0001

IShellLink.Resolve fFlags

SLR_UPDATE = $0004

STRRET_CSTR = $0002

STRRET_OFFSET = $0001

STRRET_WSTR = $0000


Variables