Unit ShellObj

Classes

IContextMenu -
ICopyHook -
IShellExtInit -

Functions

SHChangeNotify -

Types

PCMInvokeCommandInfo
PItemIDList
TCMInvokeCommandInfo
TItemIDList
TSHItemID

Constants

FO_COPY
FO_DELETE
FO_MOVE
FO_RENAME
GCS_HELPTEXT
GCS_VALIDATE
GCS_VERB
IID_IContextMenu
IID_IShellCopyHook
IID_IShellExtInit
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

Variables


Functions


procedure SHChangeNotify(wEventId:longint; uFlags:UINT; dwItem1,dwItem2:pointer);


Types


PCMInvokeCommandInfo = ^TCMInvokeCommandInfo

PItemIDList = ^TItemIDList
ITEMIDLIST -- List if item IDs (combined with 0-terminator)
TCMInvokeCommandInfo = record
cbSize : DWORD;
fMask : DWORD;
hwnd : HWND;
lpVerb : LPCSTR;
lpParameters : LPCSTR;
lpDirectory : LPCSTR;
nShow : integer;
dwHotKey : DWORD;
hIcon : THANDLE;
end;

TItemIDList = record
mkid : TSHITEMID;
end;

TSHItemID = record
cb : word;
abID : array[0..0] of BYTE;
end;
validate command exists

Constants

FO_COPY = $0002

FO_DELETE = $0003

FO_MOVE = $0001

added by njr

FO_RENAME = $0004

GCS_HELPTEXT = $00000001 { help text (for status bar) }

canonical verb

GCS_VALIDATE = $00000002 { validate command exists }

help text (for status bar)

GCS_VERB = $00000000 { canonical verb }

GetCommandString uFlags

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

Note - Delphi 2.0 shipped without a unit corresponding to SHLOBJ.H. The ShellObj unit is a stripped-down version of SHLOBJ.H containing just the definitions and constants required by this program. Delphi 2.01 added the SHLOBJ unit.

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))

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 { Events that dont match pidls first }

SHCNE_INTERRUPT = $80000000 { The presence of this flag indicates }

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 { DWORD }

printer friendly name

SHCNF_FLUSH = $1000

SHCNF_FLUSHNOWAIT = $2000

SHCNF_IDLIST = $0000 { LPITEMIDLIST }

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

SHCNF_PATH = $0001 { path name }

LPITEMIDLIST

SHCNF_PRINTER = $0002 { printer friendly name }

path name

SHCNF_TYPE = $00FF

DWORD

Variables