home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / Bonus / Plasmatech / ptscp_eval.exe / %MAINDIR% / EvalC3 / UPTShellUtils.hpp < prev    next >
Encoding:
C/C++ Source or Header  |  2001-08-31  |  11.7 KB  |  303 lines

  1. // Borland C++ Builder
  2. // Copyright (c) 1995, 1998 by Borland International
  3. // All rights reserved
  4.  
  5. // (DO NOT EDIT: machine generated header) 'UPTShellUtils.pas' rev: 3.00
  6.  
  7. #ifndef UPTShellUtilsHPP
  8. #define UPTShellUtilsHPP
  9. #include <UPTShell95.hpp>
  10. #include <ComObj.hpp>
  11. #include <Classes.hpp>
  12. #include <Forms.hpp>
  13. #include <Messages.hpp>
  14. #include <OLE2.hpp>
  15. #include <Dialogs.hpp>
  16. #include <ShellAPI.hpp>
  17. #include <SysUtils.hpp>
  18. #include <Windows.hpp>
  19. #include <SysInit.hpp>
  20. #include <System.hpp>
  21.  
  22. //-- user supplied -----------------------------------------------------------
  23.  
  24. namespace Uptshellutils
  25. {
  26. //-- type declarations -------------------------------------------------------
  27. enum TCSIDL { csidlDesktop, csidl_None1, csidlPrograms, csidlControls, csidlPrinters, csidlPersonal, 
  28.     csidlFavorites, csidlStartup, csidlRecent, csidlSendTo, csidlBitBucket, csidlStartMenu, csidl_None2, 
  29.     csidl_None3, csidl_None4, csidl_None5, csidlDesktopDirectory, csidlDrives, csidlNetwork, csidlNethood, 
  30.     csidlFonts, csidlTemplates, csidlCommonStartMenu, csidlCommonPrograms, csidlCommonStartup, csidlCommonDesktopDirectory, 
  31.     csidlAppData, csidlPrintHood, csidlNone };
  32.  
  33. #pragma pack(push, 1)
  34. struct TPTModuleVersion
  35. {
  36.     
  37.     union
  38.     {
  39.         struct 
  40.         {
  41.             int _3;
  42.             int version;
  43.             
  44.         };
  45.         struct 
  46.         {
  47.             Word _1;
  48.             Word _2;
  49.             Word minor;
  50.             Word major;
  51.             
  52.         };
  53.         struct 
  54.         {
  55.             int dw1;
  56.             int dw2;
  57.             
  58.         };
  59.         struct 
  60.         {
  61.             Word w1;
  62.             Word w2;
  63.             Word w3;
  64.             Word w4;
  65.             
  66.         };
  67.         
  68.     };
  69. } ;
  70. #pragma pack(pop)
  71.  
  72. typedef TPTModuleVersion *PPTModuleVersion;
  73.  
  74. enum TPTFriendlyNameFlags { ptfnNormal, ptfnInFolder, ptfnForParsing };
  75.  
  76. enum TPTShellIconSize { ptsizSmall, ptsizLarge };
  77.  
  78. class DELPHICLASS TPTIdListArray;
  79. class PASCALIMPLEMENTATION TPTIdListArray : public System::TObject 
  80. {
  81.     typedef System::TObject inherited;
  82.     
  83. protected:
  84.     Uptshell95::TItemIDList *mPidl;
  85.     Uptshell95::TItemIDList *mLastItem;
  86.     int __fastcall GetCount(void);
  87.     Uptshell95::PItemIDList __fastcall GetItem(int idx);
  88.     
  89. public:
  90.     __fastcall TPTIdListArray(Uptshell95::PItemIDList p);
  91.     __fastcall virtual ~TPTIdListArray(void);
  92.     Uptshell95::PItemIDList __fastcall GoUp(int items);
  93.     __property int ItemCount = {read=GetCount, nodefault};
  94.     __property Uptshell95::PItemIDList Item[int idx] = {read=GetItem/*, default*/};
  95. };
  96.  
  97. class DELPHICLASS TPTPidlList;
  98. class PASCALIMPLEMENTATION TPTPidlList : public System::TObject 
  99. {
  100.     typedef System::TObject inherited;
  101.     
  102. private:
  103.     Classes::TList* FList;
  104.     bool FSorted;
  105.     Uptshell95::IShellFolder* FShellFolder;
  106.     IMalloc* FMalloc;
  107.     TDuplicates FDuplicates;
  108.     Uptshell95::PItemIDList __fastcall GetPIDL(int Index);
  109.     void __fastcall SetPIDL(int Index, Uptshell95::PItemIDList PIDL);
  110.     void * __fastcall GetObject(int Index);
  111.     void __fastcall SetObject(int Index, void * aObject);
  112.     void __fastcall SetSorted(bool isSorted);
  113.     int __fastcall GetCount(void);
  114.     int __fastcall GetCapacity(void);
  115.     void __fastcall SetCapacity(int cap);
  116.     
  117. protected:
  118.     bool __fastcall BinarySearch(const Uptshell95::PItemIDList PIDL, int &Index);
  119.     bool __fastcall LinearSearch(const Uptshell95::PItemIDList PIDL, int &Index);
  120.     
  121. public:
  122.     __fastcall TPTPidlList(void);
  123.     __fastcall virtual ~TPTPidlList(void);
  124.     virtual int __fastcall Add(const Uptshell95::PItemIDList PIDL);
  125.     virtual int __fastcall AddObject(const Uptshell95::PItemIDList PIDL, System::TObject* aObject);
  126.     void __fastcall Delete(int index);
  127.     void __fastcall Clear(void);
  128.     int __fastcall IndexOf(const Uptshell95::PItemIDList PIDL);
  129.     void __fastcall Insert(int Index, Uptshell95::PItemIDList Pidl);
  130.     void __fastcall InsertObject(int Index, Uptshell95::PItemIDList Pidl, void * aObject);
  131.     void __fastcall Sort(void);
  132.     __property Uptshell95::PItemIDList PIDLs[int index] = {read=GetPIDL, write=SetPIDL/*, default*/};
  133.     __property void * Objects[int index] = {read=GetObject, write=SetObject};
  134.     __property bool Sorted = {read=FSorted, write=SetSorted, nodefault};
  135.     __property IMalloc* Malloc = {read=FMalloc, write=FMalloc};
  136.     __property int Count = {read=GetCount, nodefault};
  137.     __property Uptshell95::IShellFolder* ShellFolder = {read=FShellFolder, write=FShellFolder};
  138.     __property Classes::TDuplicates Duplicates = {read=FDuplicates, write=FDuplicates, nodefault};
  139.     __property int Capacity = {read=GetCapacity, write=SetCapacity, nodefault};
  140. };
  141.  
  142. enum TLinkDataOption { ldoUseDesc, ldoUseArgs, ldoUseIcon, ldoUseWorkDir, ldoUseHotKey, ldoUseShowCmd 
  143.     };
  144.  
  145. typedef Set<TLinkDataOption, ldoUseDesc, ldoUseShowCmd>  TLinkDataOptions;
  146.  
  147. struct TLinkData
  148. {
  149.     System::AnsiString pathName;
  150.     TLinkDataOptions options;
  151.     System::AnsiString desc;
  152.     System::AnsiString args;
  153.     System::AnsiString iconPath;
  154.     int iconIndex;
  155.     System::AnsiString workingDir;
  156.     int showCmd;
  157.     Word hotkey;
  158.     bool noUI;
  159.     Uptshell95::TItemIDList *idList;
  160.     _WIN32_FIND_DATAA w32fd;
  161. } ;
  162.  
  163. typedef void __fastcall (__closure *TPTDeviceChangeEvent)(System::TObject* ASender, Messages::TMessage 
  164.     &AMessage);
  165.  
  166. class DELPHICLASS TPTDeviceChangeHandler;
  167. class PASCALIMPLEMENTATION TPTDeviceChangeHandler : public System::TObject 
  168. {
  169.     typedef System::TObject inherited;
  170.     
  171. private:
  172.     bool FActive;
  173.     HWND FWindowReceiver;
  174.     Classes::TList* FNotifyList;
  175.     
  176. protected:
  177.     void __fastcall DeleteItem(int AItemIndex);
  178.     void __fastcall WndProc(Messages::TMessage &AMessage);
  179.     void __fastcall BroadcastToList(Messages::TMessage &AMessage);
  180.     
  181. public:
  182.     __fastcall TPTDeviceChangeHandler(void);
  183.     __fastcall virtual ~TPTDeviceChangeHandler(void);
  184.     void __fastcall Add(TPTDeviceChangeEvent AToNotify);
  185.     void __fastcall Remove(TPTDeviceChangeEvent AToNotify);
  186.     __property bool Active = {read=FActive, write=FActive, nodefault};
  187. };
  188.  
  189. //-- var, const, procedure ---------------------------------------------------
  190. #define COMCTL32_VER580 (int)(327760)
  191. #define COMCTL32_VER472 (int)(262216)
  192. #define COMCTL32_VER471 (int)(262215)
  193. #define COMCTL32_VER470 (int)(262214)
  194. #define COMCTL32_VER400 (int)(262144)
  195. extern PACKAGE TPTModuleVersion COMCTL32_VER;
  196. extern PACKAGE int gFlushDriveInfoSem;
  197. #define PTSH_CMDS_DELETE "delete"
  198. #define PTSH_CMDS_PASTE "paste"
  199. #define PTSH_CMDS_CUT "cut"
  200. #define PTSH_CMDS_COPY "copy"
  201. #define PTSH_CMDS_PROPERTIES "properties"
  202. #define PTSH_CMDS_EXPLORE "explore"
  203. #define PTSH_CMDS_OPEN "open"
  204. #define PTSH_CMDS_FIND "find"
  205. #define PTSH_CMDS_LINK "link"
  206. #define PTSH_CMDS_DUN_CREATE "create"
  207. #define PTSH_CMDS_DUN_CONNECT "connect"
  208. #define PTSH_CMDID_FORMAT (char *)(0x23)
  209. #define DBT_DEVNODES_CHANGED (Byte)(7)
  210. #define DBT_QUERYCHANGECONFIG (Byte)(23)
  211. #define DBT_CONFIGCHANGED (Byte)(24)
  212. #define DBT_CONFIGCHANGECANCELED (Byte)(25)
  213. #define DBT_MONITORCHANGE (Byte)(27)
  214. #define DBT_SHELLLOGGEDON (Byte)(32)
  215. #define DBT_CONFIGMGAPI32 (Byte)(34)
  216. #define DBT_VXDINITCOMPLETE (Byte)(35)
  217. #define DBT_VOLLOCKQUERYLOCK (int)(32833)
  218. #define DBT_VOLLOCKLOCKTAKEN (int)(32834)
  219. #define DBT_VOLLOCKLOCKFAILED (int)(32835)
  220. #define DBT_VOLLOCKQUERYUNLOCK (int)(32836)
  221. #define DBT_VOLLOCKLOCKRELEASED (int)(32837)
  222. #define DBT_VOLLOCKUNLOCKFAILED (int)(32838)
  223. #define DBT_NO_DISK_SPACE (Byte)(71)
  224. #define DBT_LOW_DISK_SPACE (Byte)(72)
  225. #define DBT_DEVICEARRIVAL (int)(32768)
  226. #define DBT_DEVICEQUERYREMOVE (int)(32769)
  227. #define DBT_DEVICEQUERYREMOVEFAILED (int)(32770)
  228. #define DBT_DEVICEREMOVEPENDING (int)(32771)
  229. #define DBT_DEVICEREMOVECOMPLETE (int)(32772)
  230. #define DBT_DEVICETYPESPECIFIC (int)(32773)
  231. #define DBT_DEVTYP_OEM (Byte)(0)
  232. #define DBT_DEVTYP_DEVNODE (Byte)(1)
  233. #define DBT_DEVTYP_VOLUME (Byte)(2)
  234. #define DBT_DEVTYP_PORT (Byte)(3)
  235. #define DBT_DEVTYP_NET (Byte)(4)
  236. #define DBT_DEVTYP_DEVICEINTERFACE (Byte)(5)
  237. #define DBT_DEVTYP_HANDLE (Byte)(6)
  238. extern PACKAGE bool __fastcall IsWin95(void);
  239. extern PACKAGE bool __fastcall IsOSR2OrGreater(void);
  240. extern PACKAGE bool __fastcall IsWinNT(void);
  241. extern PACKAGE bool __fastcall IsWin2000(void);
  242. extern PACKAGE bool __fastcall HasWin95Shell(void);
  243. extern PACKAGE bool __fastcall GetModuleVersion(const System::AnsiString aModuleName, TPTModuleVersion 
  244.     &aVersion);
  245. extern PACKAGE void * __fastcall ShellMemAlloc(Cardinal size);
  246. extern PACKAGE void * __fastcall ShellMemRealloc(void * p, Cardinal size);
  247. extern PACKAGE void __fastcall ShellMemFree(void * p);
  248. extern PACKAGE IMalloc* __fastcall ShellIMalloc(void);
  249. extern PACKAGE int __fastcall ShellGetFolderFromIdList(Uptshell95::PItemIDList p, Uptshell95::IShellFolder* 
  250.     &ish);
  251. extern PACKAGE int __fastcall ShellGetIdListFromPath(const System::AnsiString path, Uptshell95::PItemIDList 
  252.     &p);
  253. extern PACKAGE System::AnsiString __fastcall ShellGetPathFromIdList(Uptshell95::PItemIDList p);
  254. extern PACKAGE System::AnsiString __fastcall ShellGetDisplayPathName(System::AnsiString aPathName);
  255. extern PACKAGE System::AnsiString __fastcall ShellGetSpecialFolderPath(int ahwnd, TCSIDL csidl);
  256. extern PACKAGE int __fastcall ShellGetSpecialFolderIdList(int ahwnd, TCSIDL csidl, Uptshell95::PItemIDList 
  257.     &idlist);
  258. extern PACKAGE int __fastcall ShellGetIconIndex(Uptshell95::PItemIDList absIdList, int uFlags);
  259. extern PACKAGE int __fastcall ShellGetIconIndexFromPath(const System::AnsiString path, int uFlags);
  260. extern PACKAGE int __fastcall ShellGetIconIndexFromExt(const System::AnsiString ext, int uFlags);
  261. extern PACKAGE int __fastcall ShellGetSpecialFolderIconIndex(TCSIDL csidl, int uFlags);
  262. extern PACKAGE TCSIDL __fastcall ShellFindCSIDLFromIdList(Uptshell95::PItemIDList aIdList);
  263. extern PACKAGE System::AnsiString __fastcall ShellGetFriendlyNameFromIdList(Uptshell95::IShellFolder* 
  264.     ishf, Uptshell95::PItemIDList pidl, TPTFriendlyNameFlags flags);
  265. extern PACKAGE int __fastcall ShellGetSystemImageList(TPTShellIconSize aSize);
  266. extern PACKAGE System::AnsiString __fastcall StrretToString(Uptshell95::PItemIDList pidl, const Uptshell95::TStrRet 
  267.     &r);
  268. extern PACKAGE void __fastcall StrretFree(const Uptshell95::TStrRet &r);
  269. extern PACKAGE System::AnsiString __fastcall EnsureTrailingCharDB(const System::AnsiString aSource, 
  270.     char aTrailingChar);
  271. extern PACKAGE int __fastcall IdListLen(Uptshell95::PItemIDList pidl);
  272. extern PACKAGE int __fastcall CompareAbsIdLists(Uptshell95::PItemIDList pidl1, Uptshell95::PItemIDList 
  273.     pidl2);
  274. extern PACKAGE Uptshell95::PItemIDList __fastcall ConcatIdLists(IMalloc* ishm, Uptshell95::PItemIDList 
  275.     aFirst, Uptshell95::PItemIDList aSecond);
  276. extern PACKAGE Uptshell95::PItemIDList __fastcall CopyIdList(IMalloc* ishm, Uptshell95::PItemIDList 
  277.     pidl);
  278. extern PACKAGE int __fastcall CreateShortcut(const System::AnsiString linkPathName, const TLinkData 
  279.     &linkData);
  280. extern PACKAGE int __fastcall CreateQuickShortcut(const System::AnsiString linkPathName, const System::AnsiString 
  281.     targetPathName);
  282. extern PACKAGE int __fastcall ResolveShortcut(const System::AnsiString linkPathName, TLinkData &linkData
  283.     , bool afWantIdList);
  284. extern PACKAGE bool __fastcall PTClsidFromFileType(System::AnsiString aExtension, GUID &aCLSID);
  285. extern PACKAGE void __fastcall FlushDriveInfoCache(void);
  286. extern PACKAGE void __fastcall LockFlushDriveInfoCache(void);
  287. extern PACKAGE void __fastcall UnlockFlushDriveInfoCache(void);
  288. extern PACKAGE System::AnsiString __fastcall FormatStrPos(System::AnsiString aFmtStr, const System::AnsiString 
  289.     * data, const int data_Size);
  290. extern PACKAGE void __fastcall ParametizeCmdLineDB(const System::AnsiString ins, Classes::TStrings* 
  291.     outs);
  292. extern PACKAGE System::AnsiString __fastcall TrimRightDB(System::AnsiString Str);
  293. extern PACKAGE void __fastcall CopyCharDB(int &APos, const System::AnsiString ASource, System::AnsiString 
  294.     &ADest);
  295. extern PACKAGE TPTDeviceChangeHandler* __fastcall PTDeviceChangeHandler(void);
  296.  
  297. }    /* namespace Uptshellutils */
  298. #if !defined(NO_IMPLICIT_NAMESPACE_USE)
  299. using namespace Uptshellutils;
  300. #endif
  301. //-- end unit ----------------------------------------------------------------
  302. #endif    // UPTShellUtils
  303.