From 191725307349d6dfac10a567122b0a80cd9870a6 Mon Sep 17 00:00:00 2001 From: marco Date: Thu, 31 Jan 2008 11:30:10 +0000 Subject: [PATCH] * some enhancements to shlobj git-svn-id: trunk@10123 - --- packages/winunits-base/src/shlobj.pp | 94 ++++++++++++++++++++++++++-- 1 file changed, 89 insertions(+), 5 deletions(-) diff --git a/packages/winunits-base/src/shlobj.pp b/packages/winunits-base/src/shlobj.pp index 5a6ee92dad..836452ae0e 100644 --- a/packages/winunits-base/src/shlobj.pp +++ b/packages/winunits-base/src/shlobj.pp @@ -21,15 +21,88 @@ unit shlobj; uses windows,activex,shellapi; - type - IEnumIDList = interface(IUnknown) +Const + IID_IShellFolder : TGUID ='{000214E6-0000-0000-C000-000000000046}'; + IID_IEnumList : TGUID ='{000214F2-0000-0000-C000-000000000046}'; + IID_IAutoComplete : TGUID ='{00bb2762-6a77-11d0-a535-00c04fd7d062}'; + IID_IAutoComplete2 : TGUID ='{EAC04BC0-3791-11d2-BB95-0060977B464C}'; + IID_IContextMenu : TGUID ='{000214E4-0000-0000-c000-000000000046}'; + IID_IContextMenu2 : TGUID ='{000214f4-0000-0000-c000-000000000046}'; + IID_IContextMenu3 : TGUID ='{bcfce0a0-ec17-11d0-8d10-00a0c90f2719}'; + IID_IPersistFolder : TGUID ='{000214EA-0000-0000-C000-000000000046}'; + IID_IPersistFolder2 : TGUID ='{1AC3D9F0-175C-11d1-95BE-00609797EA4F}'; + IID_IPersistIDListr : TGUID ='{1079acfc-29bd-11d3-8e0d-00c04f6837d5}'; + IID_IEnumExtraSearch: TGUID ='{0E700BE1-9DB6-11d1-A1CE-00C04FD75D13}'; + IID_IShellFolder2 : TGUID ='{93F2F68C-1D1B-11d3-A30E-00C04F79ABD1}'; + +Type + _SHELLDETAILS = record + fmt, + cxChar : longint; + str : TSTRRET; + end; + TShellDetails = _SHELLDETAILS; + SHELLDETAILS = _SHELLDETAILS; + PShellDetails = ^TShellDetails; + LPSHELLDETAILS = PSHELLDETAILS; + + TShellDetailsEx = record + Index: UINT; + Detail: TShellDetails; + end; + tagEXTRASEARCH = packed record + guidSearch : TGUID; + wszFriendlyName : array[0..80-1] of WideChar; + wszUrl : array[0..2084-1] of WideChar; + end; + EXTRASEARCH = TagEXTRASEARCH; + TEXTRASEARCH = TagEXTRASEARCH; + LPEXTRASEARCH = ^EXTRASEARCH; + PEXTRASEARCH = ^EXTRASEARCH; + + SHCOLSTATEF = DWORD; + PSHCOLSTATEF = ^SHCOLSTATEF; + TSHCOLSTATEF = SHCOLSTATEF; + + SHColumnID = packed record + fmtid : TGUID; + pid : DWORD; + end; + LPSHColumnID = SHColumnID; + TSHColumnid = SHColumnID; + pSHColumnID = LPSHColumnID; + + IPersistFolder = Interface(IPersist) + ['{000214EA-0000-0000-C000-000000000046}'] + function Initialize (pild : LPCITEMIDLIST): HResult; StdCall; + end; + + IPersistFolder2 = Interface(IPersistFolder) + ['{1AC3D9F0-175C-11d1-95BE-00609797EA4F}'] + function GetCurFolder(Out ppidl : LPITEMIDLIST):HResult; StdCall; + end; + + IPersistIDList = Interface(IPersist) + ['{1079acfc-29bd-11d3-8e0d-00c04f6837d5}'] + function SetIdList(pid:LPCITEMIDLIST):HResult;StdCall; + function GetIdList(out pid:LPCITEMIDLIST):HResult;StdCall; + end; + + IEnumIDList = interface(IUnknown) ['{000214F2-0000-0000-C000-000000000046}'] function Next(celt: ULONG; out rgelt: PItemIDList; var pceltFetched: ULONG): HRESULT; stdcall; function Skip(celt: ULONG): HRESULT; stdcall; function Reset: HRESULT; stdcall; function Clone(out ppenum: IEnumIDList): HRESULT; stdcall; end; - IShellFolder = interface(IUnknown) + IEnumExtraSearch = Interface(IUnknown) + ['{0E700BE1-9DB6-11d1-A1CE-00C04FD75D13}'] + function Next(celt: ULONG; out rgelt: EXTRASEARCH; var pceltFetched: ULONG): HRESULT; stdcall; + function Skip(celt: ULONG): HRESULT; stdcall; function Reset: HRESULT; stdcall; + function Clone(out ppenum: IEnumExtraSearch): HRESULT; stdcall; + end; + + IShellFolder = interface(IUnknown) ['{000214E6-0000-0000-C000-000000000046}'] function ParseDisplayName(hwndOwner: HWND; pbcReserved: Pointer; lpszDisplayName: POLESTR; out pchEaten: ULONG; out ppidl: PItemIDList; var dwAttributes: ULONG): HRESULT; stdcall; function EnumObjects(hwndOwner: HWND; grfFlags: DWORD; out EnumIDList: IEnumIDList): HRESULT; stdcall; @@ -43,7 +116,18 @@ unit shlobj; function SetNameOf(hwndOwner: HWND; pidl: PItemIDList; lpszName: POLEStr; uFlags: DWORD; var ppidlOut: PItemIDList): HRESULT; stdcall; end; - IAutoComplete = interface(IUnknown) + IShellFolder2 = interface(IShellFolder) + ['{93F2F68C-1D1B-11d3-A30E-00C04F79ABD1}'] + function GetDefaultSearchGUID(out guid:TGUID):HResult;StdCall; + function EnumSearches(out ppenum:IEnumExtraSearch):HResult;StdCall; + function GetDefaultColumn(dwres:DWORD;psort :pulong; pdisplay:pulong):HResult;StdCall; + function GetDefaultColumnStart(icolumn:UINT;pscflag:PSHCOLSTATEF):HResult;StdCall; + function GetDetailsEx(pidl:LPCITEMIDLIST;pscid:PSHCOLUMNID; pv : pOLEvariant):HResult;StdCall; + function GetDetailsOf(pidl:LPCITEMIDLIST;iColumn:UINT;psd:PSHELLDETAILS):HResult;StdCall; + function MapColumnToSCID(iColumn:UINT;pscid:PSHCOLUMNID):HResult;StdCall; + end; + + IAutoComplete = interface(IUnknown) ['{00bb2762-6a77-11d0-a535-00c04fd7d062}'] function Init(hwndEdit: HWND; punkACL: IUnknown; pwszRegKeyPath: LPCWSTR; pwszQuickComplete: LPCWSTR): HRESULT; stdcall; function Enable(fEnable: BOOL): HRESULT; stdcall; @@ -87,7 +171,7 @@ unit shlobj; IContextMenu = interface(IUnknown) ['{000214E4-0000-0000-c000-000000000046}'] function QueryContextMenu(hmenu:HMENU;indexMenu:UINT;idCmdFirst:UINT;idCmdLast:UINT;UFlags:uint):HRESULT;StdCall; - function InvokeCommand(lpici : LPCMINVOKECOMMANDINFO):HResult; StdCall; + function InvokeCommand(var lpici : TCMINVOKECOMMANDINFO):HResult; StdCall; function GetCommandString(idcmd:UINT_Ptr;uType:UINT;pwreserved:puint;pszName:LPStr;cchMax:uint):HResult;StdCall; end; IContextMenu2 = interface(IContextMenu)