Browse Source

* some enhancements to shlobj

git-svn-id: trunk@10123 -
marco 17 years ago
parent
commit
1917253073
1 changed files with 89 additions and 5 deletions
  1. 89 5
      packages/winunits-base/src/shlobj.pp

+ 89 - 5
packages/winunits-base/src/shlobj.pp

@@ -21,15 +21,88 @@ unit shlobj;
     uses
     uses
       windows,activex,shellapi;
       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}']
         ['{000214F2-0000-0000-C000-000000000046}']
         function Next(celt: ULONG; out rgelt: PItemIDList; var pceltFetched: ULONG): HRESULT; stdcall;
         function Next(celt: ULONG; out rgelt: PItemIDList; var pceltFetched: ULONG): HRESULT; stdcall;
         function Skip(celt: ULONG): HRESULT; stdcall; function Reset: HRESULT; stdcall;
         function Skip(celt: ULONG): HRESULT; stdcall; function Reset: HRESULT; stdcall;
         function Clone(out ppenum: IEnumIDList): HRESULT; stdcall;
         function Clone(out ppenum: IEnumIDList): HRESULT; stdcall;
       end;
       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}']
         ['{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 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;
         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;
         function SetNameOf(hwndOwner: HWND; pidl: PItemIDList; lpszName: POLEStr; uFlags: DWORD; var ppidlOut: PItemIDList): HRESULT; stdcall;
       end;
       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}']
         ['{00bb2762-6a77-11d0-a535-00c04fd7d062}']
         function Init(hwndEdit: HWND; punkACL: IUnknown; pwszRegKeyPath: LPCWSTR; pwszQuickComplete: LPCWSTR): HRESULT; stdcall;
         function Init(hwndEdit: HWND; punkACL: IUnknown; pwszRegKeyPath: LPCWSTR; pwszQuickComplete: LPCWSTR): HRESULT; stdcall;
         function Enable(fEnable: BOOL): HRESULT; stdcall;
         function Enable(fEnable: BOOL): HRESULT; stdcall;
@@ -87,7 +171,7 @@ unit shlobj;
     IContextMenu = interface(IUnknown)
     IContextMenu = interface(IUnknown)
          ['{000214E4-0000-0000-c000-000000000046}']
          ['{000214E4-0000-0000-c000-000000000046}']
          function QueryContextMenu(hmenu:HMENU;indexMenu:UINT;idCmdFirst:UINT;idCmdLast:UINT;UFlags:uint):HRESULT;StdCall;
          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;
          function GetCommandString(idcmd:UINT_Ptr;uType:UINT;pwreserved:puint;pszName:LPStr;cchMax:uint):HResult;StdCall;
        end;
        end;
     IContextMenu2 = interface(IContextMenu)
     IContextMenu2 = interface(IContextMenu)