{$IFDEF SHL_IDC} const IDD_SHLOPTS = 101; IDC_USEGROUPS = 1014; IDC_CLISTGROUPS = 1015; // Show "HIT" IDC_SHOWFULL = 1016; IDC_NOPROF = 1020; IDC_SHOWINVISIBLES = 1021; IDC_HIDEOFFLINE = 1022; // only in the options dialog IDC_STATUS = 1023; IDC_CAPMENUS = 1025; IDC_CAPSTATUS = 1026; IDC_CAPSHLSTATUS = 1027; IDC_REMOVE = 1028; IDC_USEOWNERDRAW = 1029; {$ENDIF} {$IFDEF SHL_KEYS} const SHLExt_Name: PChar = 'shlext15'; SHLExt_MRU: PChar = 'MRU'; SHLExt_UseGroups: PChar = 'UseGroups'; SHLExt_UseCListSetting:PChar = 'UseCLGroups'; SHLExt_UseHITContacts:PChar = 'UseHITContacts'; // HIT2 contacts will get your messages but don't know your state SHLExt_UseHIT2Contacts: PChar = 'UseHIT2Contacts'; SHLExt_ShowNoProfile:PChar = 'ShowNoProfile'; SHLExt_ShowNoIcons:PChar = 'ShowNoIcons'; SHLExt_ShowNoOffline:PChar = 'ShowNoOffline'; {$ENDIF} {$IFDEF SHLCOM} const S_OK = 0; S_FALSE = 1; E_UNEXPECTED = $8000FFFF; E_NOTIMPL = $80004001; E_INVALIDARG = $80070057; CLASS_E_NOAGGREGATION = $80040110; CLASS_E_CLASSNOTAVAILABLE = $80040111; CLSCTX_INPROC_SERVER = $1; { for FORMATETC } TYMED_HGLOBAL = 1; DVASPECT_CONTENT = 1; type PGUID = ^TGUID; TGUID = record D1: Longint; D2: Word; D3: Word; D4: array[0..7] of Byte; end; TIID = TGUID; TCLSID = TGUID; TStgMedium = record tymed: Longint; case Integer of 0: (hBitmap: HBitmap; unkForRelease: Pointer{IUnknown}); 1: (hMetaFilePict: THandle); 2: (hEnhMetaFile: THandle); 3: (hGlobal: HGlobal); 4: (lpszFileName: Pointer{POleStr}); 5: (stm: Pointer{IUnknown}); 6: (stg: Pointer{IStorage}); end; PFormatEtc = ^TFormatEtc; TFormatEtc = record cfFormat: Word; {TClipFormat;} ptd: Pointer; {PDVTargetDevice;} dwAspect: Longint; lindex: Longint; tymed: Longint; end; {$ENDIF} {$IFDEF COM_STRUCTS} const IID_IUnknown : TGUID = ( D1:$00000000; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46) ); IID_IClassFactory : TGUID = ( D1:$00000001; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46) ); IID_IShellExtInit : TGUID = ( D1:$000214E8; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46) ); IID_IContextMenu : TGUID = ( D1:$000214E4; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46) ); IID_IContextMenu2 : TGUID = ( D1:$000214F4; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46) ); IID_IContextMenu3 : TGUID = ( D1:$BCFCE0A0; D2:$EC17; D3:$11D0; D4:($8D,$10,$00,$A0,$C9,$0F,$27,$19) ); IID_WICImagingFactory: TGUID = ( D1:$EC5EC8A9; D2:$C395; D3:$4314; D4:($9C,$77,$54,$D7,$A9,$35,$FF,$70) ); // Vista+ only CLSID_WICImagingFactory : TGUID = ( D1:$cacaf262; D2:$9370; D3:$4615; D4:($A1,$3B,$9F,$55,$39,$DA,$4C,$0A) ); // anything before 0.0.1.5 was : {A321A032-7976-11d6-A310-ED893982BF28} // changed to a new GUID to avoid older plugins // {72013A26-A94C-11d6-8540-A5E62932711D} // the IPC header now checks the plugin version given anyway. CLSID_ISHLCOM : TGUID = ( D1: $72013a26; D2: $a94c; D3: $11d6; D4: ($85,$40,$a5,$e6,$29,$32,$71,$1d); ); {$ENDIF} {$IFDEF COMAPI} function CoCreateInstance(const rclsid: TCLSID; pUnkOuter: Pointer; dwClsContext: DWORD; const riid: TIID; var ppv): HResult; stdcall; external 'ole32.dll' name 'CoCreateInstance'; procedure ReleaseStgMedium(var medium: TStgMedium); stdcall; external 'ole32.dll' name 'ReleaseStgMedium'; function IsEqualGUID(const guid1, guid2: TGUID): Boolean; stdcall; external 'ole32.dll' name 'IsEqualGUID'; function IsEqualIID(const iid1, iid2: TIID): Boolean; stdcall; external 'ole32.dll' name 'IsEqualGUID'; function IsEqualCLSID(const clsid1, clsid2: TCLSID): Boolean; stdcall; external 'ole32.dll' name 'IsEqualGUID'; function QueueUserAPC(pfnAPC: Pointer; hThread: THandle; dwData: DWORD): BOOL; stdcall; external 'kernel32' name 'QueueUserAPC'; {$ENDIF}