*****************************************************} { } { Delphi Runtime Library } { Windows 32bit API Interface Unit } { } { Copyright (c) 1996 Borland International } { } {
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.
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.
PBrowseInfo
PCMInvokeCommandInfo
PDropFiles
PFileDescriptor
PFileGroupDescriptor
PFVShowInfo
PIDA
PItemIDList
PNResArray
PSHItemID
PSTRRet
TBrowseInfo
TCMInvokeCommandInfo
TDropFiles
TFileDescriptor
TFileGroupDescriptor
TFNBFFCallBack
TFVShowInfo
TIDA
TItemIDList
TNResArray
TSHDescriptionID
TSHItemID
TStrRet
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
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.
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;
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