shlwapi.pp 72 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984
  1. unit shlwapi;
  2. {
  3. This file is part of the Free Pascal run time library.
  4. partial shlwapi.h header translation
  5. Copyright (c) 1999-2019 by Marco van de Voort,
  6. member of the Free Pascal development team.
  7. See the file COPYING.FPC, included in this distribution,
  8. for details about the copyright.
  9. This program is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  12. ************************************************************************}
  13. interface
  14. {$mode delphi}
  15. Uses Windows,ActiveX;
  16. const
  17. SHLWAPIDLL='shlwapi.dll'; {Setup as you need}
  18. Type
  19. SFBS_FLAGS = longint;
  20. STIF_FLAGS = longint;
  21. SRRF = integer;
  22. LSTATUS = LONG;
  23. HUSKEY = THANDLE;
  24. PHUSKEY = PHANDLE;
  25. SHCT_FLAGS = DWORD; // SHCreateThread flags values
  26. ASSOCF = DWORD;
  27. PHWND = PHANDLE;
  28. PPIDLIST_RELATIVE = PITEMIDLIST;
  29. PCUIDLIST_RELATIVE = PITEMIDLIST;
  30. PCIDLIST_ABSOLUTE = PITEMIDLIST;
  31. PPERCEIVEDFLAG = ^PERCEIVEDFLAG;
  32. PERCEIVEDFLAG = DWORD;
  33. PSFBS_FLAGS = ^SFBS_FLAGS;
  34. PSTIF_FLAGS = ^STIF_FLAGS;
  35. PtagSFBS_FLAGS = ^tagSFBS_FLAGS;
  36. tagSFBS_FLAGS = (SFBS_FLAGS_ROUND_TO_NEAREST_DISPLAYED_DIGIT = $0001,
  37. SFBS_FLAGS_TRUNCATE_UNDISPLAYED_DECIMAL_DIGITS = $0002
  38. );
  39. PCUITEMID_CHILD= PITEMIDLIST;
  40. PZPCSTR = PLPSTR; // PLPCSTR
  41. PZPCWSTR = PLPWSTR; // PLPCWSTR
  42. const
  43. STIF_DEFAULT = $00000000;
  44. STIF_SUPPORT_HEX = $00000001;
  45. Type
  46. PURL_SCHEME = ^URL_SCHEME;
  47. URL_SCHEME = (
  48. URL_SCHEME_INVALID = -(1),
  49. URL_SCHEME_UNKNOWN = 0,
  50. URL_SCHEME_FTP,
  51. URL_SCHEME_HTTP,
  52. URL_SCHEME_GOPHER,
  53. URL_SCHEME_MAILTO,
  54. URL_SCHEME_NEWS,
  55. URL_SCHEME_NNTP,
  56. URL_SCHEME_TELNET,
  57. URL_SCHEME_WAIS,
  58. URL_SCHEME_FILE,
  59. URL_SCHEME_MK,
  60. URL_SCHEME_HTTPS,
  61. URL_SCHEME_SHELL,
  62. URL_SCHEME_SNEWS,
  63. URL_SCHEME_LOCAL,
  64. URL_SCHEME_JAVASCRIPT,
  65. URL_SCHEME_VBSCRIPT,
  66. URL_SCHEME_ABOUT,
  67. URL_SCHEME_RES,
  68. URL_SCHEME_MSSHELLROOTED,
  69. URL_SCHEME_MSSHELLIDLIST,
  70. URL_SCHEME_MSHELP,
  71. URL_SCHEME_MSSHELLDEVICE,
  72. URL_SCHEME_WILDCARD,
  73. URL_SCHEME_SEARCH_MS,
  74. URL_SCHEME_SEARCH,
  75. URL_SCHEME_KNOWNFOLDER,
  76. URL_SCHEME_MAXVALUE
  77. );
  78. PURL_PART = ^URL_PART;
  79. URL_PART = (
  80. URL_PART_NONE = 0,
  81. URL_PART_SCHEME = 1,
  82. URL_PART_HOSTNAME,
  83. URL_PART_USERNAME,
  84. URL_PART_PASSWORD,
  85. URL_PART_PORT,
  86. URL_PART_QUERY);
  87. PURLIS = ^URLIS;
  88. URLIS = (
  89. URLIS_URL =0,
  90. URLIS_OPAQUE,
  91. URLIS_NOHISTORY,
  92. URLIS_FILEURL,
  93. URLIS_APPLIABLE,
  94. URLIS_DIRECTORY,
  95. URLIS_HASQUERY);
  96. SHREGDEL_FLAGS = (
  97. SHREGDEL_DEFAULT = $00000000, // Delete's HKCU, or HKLM if HKCU is not found.
  98. SHREGDEL_HKCU = $00000001, // Delete HKCU only
  99. SHREGDEL_HKLM = $00000010, // Delete HKLM only.
  100. SHREGDEL_BOTH = $00000011 // Delete both HKCU and HKLM.
  101. );
  102. SHREGENUM_FLAGS = (
  103. SHREGENUM_DEFAULT = $00000000, // Enumerates HKCU or HKLM if not found.
  104. SHREGENUM_HKCU = $00000001, // Enumerates HKCU only
  105. SHREGENUM_HKLM = $00000010, // Enumerates HKLM only.
  106. SHREGENUM_BOTH = $00000011 // Enumerates both HKCU and HKLM without duplicates.
  107. ); // This option is NYI.
  108. ASSOCSTR = (
  109. ASSOCSTR_COMMAND = 1, // shell\verb\command string
  110. ASSOCSTR_EXECUTABLE, // the executable part of command string
  111. ASSOCSTR_FRIENDLYDOCNAME, // friendly name of the document type
  112. ASSOCSTR_FRIENDLYAPPNAME, // friendly name of executable
  113. ASSOCSTR_NOOPEN, // noopen value
  114. ASSOCSTR_SHELLNEWVALUE, // query values under the shellnew key
  115. ASSOCSTR_DDECOMMAND, // template for DDE commands
  116. ASSOCSTR_DDEIFEXEC, // DDECOMMAND to use if just create a process
  117. ASSOCSTR_DDEAPPLICATION, // Application name in DDE broadcast
  118. ASSOCSTR_DDETOPIC, // Topic Name in DDE broadcast
  119. ASSOCSTR_INFOTIP, // info tip for an item, or list of properties to create info tip from
  120. //#if (_WIN32_IE >= _WIN32_IE_IE60)
  121. ASSOCSTR_QUICKTIP, // same as ASSOCSTR_INFOTIP, except, this list contains only quickly retrievable properties
  122. ASSOCSTR_TILEINFO, // similar to ASSOCSTR_INFOTIP - lists important properties for tileview
  123. ASSOCSTR_CONTENTTYPE, // MIME Content type
  124. ASSOCSTR_DEFAULTICON, // Default icon source
  125. ASSOCSTR_SHELLEXTENSION, // Guid string pointing to the Shellex\Shellextensionhandler value.
  126. //#endif // _WIN32_IE_IE60
  127. ASSOCSTR_DROPTARGET, // The CLSID of DropTarget IE8+
  128. ASSOCSTR_DELEGATEEXECUTE, // The CLSID of DelegateExecute IE8+
  129. // a string value of the uri protocol schemes, for example "http:https:ftp:file:" or "*" indicating all
  130. ASSOCSTR_SUPPORTED_URI_PROTOCOLS,
  131. //#if (NTDDI_VERSION >= NTDDI_WIN10)
  132. ASSOCSTR_PROGID, // The ProgId provided by the app associated with the file type or uri scheme based on user default settings.
  133. ASSOCSTR_APPID, // The AppUserModelID of the app associated with the file type or uri scheme based on user default settings.
  134. ASSOCSTR_APPPUBLISHER, // THe publisher of the app associated with the file type or uri scheme based on user default settings.
  135. ASSOCSTR_APPICONREFERENCE, // The icon reference of the app associated with the file type or uri scheme based on user default settings.
  136. //#endif // NTDDI_WIN10
  137. ASSOCSTR_MAX // last item in enum...
  138. );
  139. ASSOCKEY = (
  140. ASSOCKEY_SHELLEXECCLASS = 1, // the key that should be passed to ShellExec(hkeyClass)
  141. ASSOCKEY_APP, // the "Application" key for the association
  142. ASSOCKEY_CLASS, // the progid or class key
  143. ASSOCKEY_BASECLASS, // the BaseClass key
  144. ASSOCKEY_MAX // last item in enum...
  145. );
  146. ASSOCDATA = (
  147. ASSOCDATA_MSIDESCRIPTOR = 1, // Component Descriptor to pass to MSI APIs
  148. ASSOCDATA_NOACTIVATEHANDLER, // restrict attempts to activate window
  149. ASSOCDATA_UNUSED1, // removed QUERYCLASSSTORE, dead code
  150. ASSOCDATA_HASPERUSERASSOC, // defaults to user specified association
  151. ASSOCDATA_EDITFLAGS, // Edit flags. IE6+
  152. ASSOCDATA_VALUE, // use pszExtra as the Value name IE6+
  153. ASSOCDATA_MAX
  154. );
  155. ASSOCENUM = (
  156. ASSOCENUM_NONE = 1
  157. );
  158. SHGLOBALCOUNTER = (
  159. GLOBALCOUNTER_SEARCHMANAGER =0,
  160. GLOBALCOUNTER_SEARCHOPTIONS,
  161. GLOBALCOUNTER_FOLDERSETTINGSCHANGE,
  162. GLOBALCOUNTER_RATINGS,
  163. GLOBALCOUNTER_APPROVEDSITES,
  164. GLOBALCOUNTER_RESTRICTIONS,
  165. GLOBALCOUNTER_SHELLSETTINGSCHANGED,
  166. GLOBALCOUNTER_SYSTEMPIDLCHANGE,
  167. GLOBALCOUNTER_OVERLAYMANAGER,
  168. GLOBALCOUNTER_QUERYASSOCIATIONS,
  169. GLOBALCOUNTER_IESESSIONS,
  170. GLOBALCOUNTER_IEONLY_SESSIONS,
  171. GLOBALCOUNTER_APPLICATION_DESTINATIONS,
  172. __UNUSED_RECYCLE_WAS_GLOBALCOUNTER_CSCSYNCINPROGRESS,
  173. GLOBALCOUNTER_BITBUCKETNUMDELETERS,
  174. GLOBALCOUNTER_RECYCLEDIRTYCOUNT_SHARES,
  175. GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_A,
  176. GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_B,
  177. GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_C,
  178. GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_D,
  179. GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_E,
  180. GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_F,
  181. GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_G,
  182. GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_H,
  183. GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_I,
  184. GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_J,
  185. GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_K,
  186. GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_L,
  187. GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_M,
  188. GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_N,
  189. GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_O,
  190. GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_P,
  191. GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_Q,
  192. GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_R,
  193. GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_S,
  194. GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_T,
  195. GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_U,
  196. GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_V,
  197. GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_W,
  198. GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_X,
  199. GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_Y,
  200. GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_Z,
  201. __UNUSED_RECYCLE_WAS_GLOBALCOUNTER_RECYCLEDIRTYCOUNT_SERVERDRIVE,
  202. __UNUSED_RECYCLE_WAS_GLOBALCOUNTER_RECYCLEGLOBALDIRTYCOUNT,
  203. GLOBALCOUNTER_RECYCLEBINENUM,
  204. GLOBALCOUNTER_RECYCLEBINCORRUPTED,
  205. GLOBALCOUNTER_RATINGS_STATECOUNTER,
  206. GLOBALCOUNTER_PRIVATE_PROFILE_CACHE,
  207. GLOBALCOUNTER_INTERNETTOOLBAR_LAYOUT,
  208. GLOBALCOUNTER_FOLDERDEFINITION_CACHE,
  209. GLOBALCOUNTER_COMMONPLACES_LIST_CACHE,
  210. GLOBALCOUNTER_PRIVATE_PROFILE_CACHE_MACHINEWIDE,
  211. GLOBALCOUNTER_ASSOCCHANGED, // throttles reading of the registry value "GlobalAssocChangedCounter" from HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer
  212. //#if (NTDDI_VERSION >= NTDDI_WIN8)
  213. GLOBALCOUNTER_APP_ITEMS_STATE_STORE_CACHE,
  214. GLOBALCOUNTER_SETTINGSYNC_ENABLED,
  215. GLOBALCOUNTER_APPSFOLDER_FILETYPEASSOCIATION_COUNTER,
  216. GLOBALCOUNTER_USERINFOCHANGED,
  217. GLOBALCOUNTER_SYNC_ENGINE_INFORMATION_CACHE_MACHINEWIDE, // WINBLUE+
  218. //#endif // (NTDDI_VERSION >= NTDDI_WIN8)
  219. GLOBALCOUNTER_BANNERS_DATAMODEL_CACHE_MACHINEWIDE, // WIN10_RS1+
  220. GLOBALCOUNTER_MAXIMUMVALUE // should always be last value
  221. );
  222. // Stored under HKCR\<progId> EditFlags(REG_DWORD)
  223. //
  224. // Retrieve these values using IQueryAssociations::GetData as follows
  225. //
  226. // DWORD editFlags, size = sizeof(editFlags);
  227. // queryAssoc->GetData(nullptr, ASSOCDATA_EDITFLAGS, nullptr, &editFlags, &size);
  228. //
  229. // Some of these flags are no longer used since editing file type associations has been
  230. // removed from Explorer's folder options UI.
  231. FILETYPEATTRIBUTEFLAGS = (
  232. FTA_None = $00000000,
  233. FTA_Exclude = $00000001, // used to exclude (hide) types like drvfile
  234. FTA_Show = $00000002, // used to show types like folder that don't have associations
  235. FTA_HasExtension = $00000004, // type has a file name extension
  236. FTA_NoEdit = $00000008, // no editing of file type
  237. FTA_NoRemove = $00000010, // no removing of the file type
  238. FTA_NoNewVerb = $00000020, // no adding of verbs
  239. FTA_NoEditVerb = $00000040, // no editing of predefined verbs
  240. FTA_NoRemoveVerb = $00000080, // no removing of predefined verbs
  241. FTA_NoEditDesc = $00000100, // no editing of file type description
  242. FTA_NoEditIcon = $00000200, // no editing of doc icon
  243. FTA_NoEditDflt = $00000400, // no changing of default verb
  244. FTA_NoEditVerbCmd = $00000800, // no modification of the commnds associated with the verbs
  245. FTA_NoEditVerbExe = $00001000, // no editing of the verb's exe
  246. FTA_NoDDE = $00002000, // no editing of the DDE fields
  247. FTA_NoEditMIME = $00008000, // no editing of the Content Type or Default Extension fields
  248. FTA_OpenIsSafe = $00010000, // the open verb should be invoked automaticaly for downloaded files
  249. FTA_AlwaysUnsafe = $00020000, // don't allow the "Never ask me" checkbox to be enabled; File Type dialog still allows user to turn this off
  250. FTA_NoRecentDocs = $00100000, // don't add this file type to the Recent Documents folder
  251. FTA_SafeForElevation = $00200000, // Win8: can be launched in medium IL by a process running in AppContainer
  252. FTA_AlwaysUseDirectInvoke = $00400000 // Win8: when downloading use the direct invoke feature even if the server headers are not provided
  253. );
  254. PPERCEIVED = ^PERCEIVED;
  255. PERCEIVED = (
  256. PERCEIVED_TYPE_CUSTOM = -3,
  257. PERCEIVED_TYPE_UNSPECIFIED = -2,
  258. PERCEIVED_TYPE_FOLDER = -1,
  259. PERCEIVED_TYPE_UNKNOWN = 0,
  260. PERCEIVED_TYPE_TEXT = 1,
  261. PERCEIVED_TYPE_IMAGE = 2,
  262. PERCEIVED_TYPE_AUDIO = 3,
  263. PERCEIVED_TYPE_VIDEO = 4,
  264. PERCEIVED_TYPE_COMPRESSED = 5,
  265. PERCEIVED_TYPE_DOCUMENT = 6,
  266. PERCEIVED_TYPE_SYSTEM = 7,
  267. PERCEIVED_TYPE_APPLICATION = 8,
  268. PERCEIVED_TYPE_GAMEMEDIA = 9,
  269. PERCEIVED_TYPE_CONTACTS = 10
  270. );
  271. const
  272. PERCEIVED_TYPE_LAST = PERCEIVED_TYPE_CONTACTS;
  273. PERCEIVED_TYPE_FIRST = PERCEIVED_TYPE_CUSTOM;
  274. type
  275. PtagPARSEDURLA = ^tagPARSEDURLA;
  276. tagPARSEDURLA = record
  277. cbSize : DWORD;
  278. pszProtocol : LPCSTR;
  279. cchProtocol : UINT;
  280. pszSuffix : LPCSTR;
  281. cchSuffix : UINT;
  282. nScheme : UINT;
  283. end;
  284. PARSEDURLA = tagPARSEDURLA;
  285. PPARSEDURLA = ^PARSEDURLA;
  286. PPPARSEDURLA = ^PPARSEDURLA;
  287. PtagPARSEDURLW = ^tagPARSEDURLW;
  288. tagPARSEDURLW = record
  289. cbSize : DWORD;
  290. pszProtocol : LPCWSTR;
  291. cchProtocol : UINT;
  292. pszSuffix : LPCWSTR;
  293. cchSuffix : UINT;
  294. nScheme : UINT;
  295. end;
  296. PARSEDURLW = tagPARSEDURLW;
  297. PPARSEDURLW = ^PARSEDURLW;
  298. PPPARSEDURLW = ^PPARSEDURLW;
  299. {$ifdef UNICODE}
  300. PARSEDURL = PARSEDURLW;
  301. PPPARSEDURL = ^PPARSEDURL;
  302. PPARSEDURL = PPARSEDURLW;
  303. {$else}
  304. PARSEDURL = PARSEDURLA;
  305. PPPARSEDURL = ^PPARSEDURL;
  306. PPARSEDURL = PPARSEDURLA;
  307. {$endif}
  308. const
  309. URL_UNESCAPE = $10000000;
  310. URL_ESCAPE_UNSAFE = $20000000;
  311. URL_PLUGGABLE_PROTOCOL = $40000000;
  312. URL_WININET_COMPATIBILITY = $80000000;
  313. URL_DONT_ESCAPE_EXTRA_INFO = $02000000;
  314. URL_DONT_UNESCAPE_EXTRA_INFO = URL_DONT_ESCAPE_EXTRA_INFO;
  315. URL_BROWSER_MODE = URL_DONT_ESCAPE_EXTRA_INFO;
  316. URL_ESCAPE_SPACES_ONLY = $04000000;
  317. URL_DONT_SIMPLIFY = $08000000;
  318. URL_NO_META = URL_DONT_SIMPLIFY;
  319. URL_UNESCAPE_INPLACE = $00100000;
  320. URL_CONVERT_IF_DOSPATH = $00200000;
  321. URL_UNESCAPE_HIGH_ANSI_ONLY= $00400000;
  322. URL_INTERNAL_PATH = $00800000; { Will escape #'s in paths }
  323. URL_FILE_USE_PATHURL = $00010000;
  324. URL_DONT_UNESCAPE = $00020000; { Do not unescape the path/url at all IE6.0SP2++ }
  325. URL_ESCAPE_AS_UTF8 = $00040000; { Percent-encode all non-ASCII characters as their UTF-8 equivalents. Win7+ }
  326. {#if (NTDDI_VERSION >= NTDDI_WIN8) }
  327. URL_UNESCAPE_AS_UTF8 = URL_ESCAPE_AS_UTF8;
  328. URL_ESCAPE_ASCII_URI_COMPONENT = $00080000; { Percent-encode all ASCII characters outside of the unreserved set from URI RFC 3986 (a-zA-Z0-9-.~_) (i.e.) No need for URL_ESCAPE_PERCENT along with this. }
  329. URL_ESCAPE_URI_COMPONENT = URL_ESCAPE_ASCII_URI_COMPONENT or URL_ESCAPE_AS_UTF8;
  330. URL_UNESCAPE_URI_COMPONENT = URL_UNESCAPE_AS_UTF8;
  331. {#endif // (NTDDI_VERSION >= NTDDI_WIN8) }
  332. URL_ESCAPE_PERCENT = $00001000;
  333. URL_ESCAPE_SEGMENT_ONLY = $00002000; { Treat the entire URL param as one URL segment. }
  334. URL_PARTFLAG_KEEPSCHEME = $00000001;
  335. URL_APPLY_DEFAULT = $00000001;
  336. URL_APPLY_GUESSSCHEME = $00000002;
  337. URL_APPLY_GUESSFILE = $00000004;
  338. URL_APPLY_FORCEAPPLY = $00000008;
  339. SRRF_RT_REG_NONE = $00000001; // restrict type to REG_NONE (other data types will not return ERROR_SUCCESS)
  340. SRRF_RT_REG_SZ = $00000002; // restrict type to REG_SZ (other data types will not return ERROR_SUCCESS) (automatically converts REG_EXPAND_SZ to REG_SZ unless SRRF_NOEXPAND is specified)
  341. SRRF_RT_REG_EXPAND_SZ = $00000004; // restrict type to REG_EXPAND_SZ (other data types will not return ERROR_SUCCESS) (must specify SRRF_NOEXPAND or SHRegGetValue will fail with ERROR_INVALID_PARAMETER)
  342. SRRF_RT_REG_BINARY = $00000008; // restrict type to REG_BINARY (other data types will not return ERROR_SUCCESS)
  343. SRRF_RT_REG_DWORD = $00000010; // restrict type to REG_DWORD (other data types will not return ERROR_SUCCESS)
  344. SRRF_RT_REG_MULTI_SZ = $00000020; // restrict type to REG_MULTI_SZ (other data types will not return ERROR_SUCCESS)
  345. SRRF_RT_REG_QWORD = $00000040; // restrict type to REG_QWORD (other data types will not return ERROR_SUCCESS)
  346. SRRF_RT_DWORD = (SRRF_RT_REG_BINARY or SRRF_RT_REG_DWORD); // restrict type to *32-bit* SRRF_RT_REG_BINARY or SRRF_RT_REG_DWORD (other data types will not return ERROR_SUCCESS)
  347. SRRF_RT_QWORD = (SRRF_RT_REG_BINARY or SRRF_RT_REG_QWORD); // restrict type to *64-bit* SRRF_RT_REG_BINARY or SRRF_RT_REG_DWORD (other data types will not return ERROR_SUCCESS)
  348. SRRF_RT_ANY = $0000ffff; // no type restriction
  349. SRRF_RM_ANY = $00000000; // no mode restriction (default is to allow any mode)
  350. SRRF_RM_NORMAL = $00010000; // restrict system startup mode to "normal boot" (other startup modes will not return ERROR_SUCCESS)
  351. SRRF_RM_SAFE = $00020000; // restrict system startup mode to "safe mode" (other startup modes will not return ERROR_SUCCESS)
  352. SRRF_RM_SAFENETWORK = $00040000; // restrict system startup mode to "safe mode with networking" (other startup modes will not return ERROR_SUCCESS)
  353. SRRF_NOEXPAND = $10000000; // do not automatically expand environment strings if value is of type REG_EXPAND_SZ
  354. SRRF_ZEROONFAILURE = $20000000; // if pvData is not NULL, set content to all zeros on failure
  355. SRRF_NOVIRT = $40000000; // if the requested key is virtualized, then fail with ERROR_FILE_NOT_FOUND
  356. SHREGSET_HKCU = $00000001; // Write to HKCU if empty.
  357. SHREGSET_FORCE_HKCU = $00000002; // Write to HKCU.
  358. SHREGSET_HKLM = $00000004; // Write to HKLM if empty.
  359. SHREGSET_FORCE_HKLM = $00000008; // Write to HKLM.
  360. SHREGSET_DEFAULT = (SHREGSET_FORCE_HKCU or SHREGSET_HKLM); // Default is SHREGSET_FORCE_HKCU | SHREGSET_HKLM.
  361. //
  362. // Association APIs
  363. //
  364. // these APIs are to assist in accessing the data in HKCR
  365. // getting the Command strings and exe paths
  366. // for different verbs and extensions are simplified this way
  367. //
  368. ASSOCF_NONE = $00000000;
  369. ASSOCF_INIT_NOREMAPCLSID = $00000001; // do not remap clsids to progids
  370. ASSOCF_INIT_BYEXENAME = $00000002; // executable is being passed in
  371. ASSOCF_OPEN_BYEXENAME = $00000002; // executable is being passed in
  372. ASSOCF_INIT_DEFAULTTOSTAR = $00000004; // treat "*" as the BaseClass
  373. ASSOCF_INIT_DEFAULTTOFOLDER= $00000008; // treat "Folder" as the BaseClass
  374. ASSOCF_NOUSERSETTINGS = $00000010; // dont use HKCU
  375. ASSOCF_NOTRUNCATE = $00000020; // dont truncate the return string
  376. ASSOCF_VERIFY = $00000040; // verify data is accurate (DISK HITS)
  377. ASSOCF_REMAPRUNDLL = $00000080; // actually gets info about rundlls target if applicable
  378. ASSOCF_NOFIXUPS = $00000100; // attempt to fix errors if found
  379. ASSOCF_IGNOREBASECLASS = $00000200; // dont recurse into the baseclass
  380. ASSOCF_INIT_IGNOREUNKNOWN = $00000400; // dont use the "Unknown" progid, instead fail
  381. //#if (NTDDI_VERSION >= NTDDI_WIN8)
  382. ASSOCF_INIT_FIXED_PROGID = $00000800; // the Init() pszAssoc value is a ProgId that should not be mapped using the current user defaults
  383. ASSOCF_IS_PROTOCOL = $00001000; // the Init() pszAssoc value is an uri scheme (not including the ":") that should be mapped using the current user defaults
  384. ASSOCF_INIT_FOR_FILE = $00002000; // use this flag when specifying ASSOCF_INIT_FIXED_PROGID if the ProgId corresponds with a file extension based association
  385. //#endif
  386. //#if (NTDDI_VERSION >= NTDDI_WIN10_RS1)
  387. ASSOCF_IS_FULL_URI = $00004000; // Used to specify that full http/https URI is being passed for target resolution
  388. // Only one of ASSOCF_INIT_FIXED_PROGID, ASSOCF_IS_PROTOCOL or ASSOCF_IS_FULL_URI can be specified at a time.
  389. ASSOCF_PER_MACHINE_ONLY = $00008000; // Enforces per-machine association look-up only and avoid HKCU.
  390. //#endif
  391. ASSOCF_APP_TO_APP = $00010000; // #if NTDDI_WIN10_RS4+
  392. CTF_INSIST = $00000001; // call pfnThreadProc synchronously if CreateThread() fails
  393. CTF_THREAD_REF = $00000002; // hold a reference to the creating thread
  394. CTF_PROCESS_REF = $00000004; // hold a reference to the creating process
  395. CTF_COINIT_STA = $00000008; // init COM as STA for the created thread
  396. CTF_COINIT = $00000008; // init COM as STA for the created thread
  397. CTF_FREELIBANDEXIT = $00000010; // hold a ref to the DLL and call FreeLibraryAndExitThread() when done IE6+
  398. CTF_REF_COUNTED = $00000020; // thread supports ref counting via SHGetThreadRef() or CTF_THREAD_REF so that child threads can keep this thread alive IE6+
  399. CTF_WAIT_ALLOWCOM = $00000040; // while waiting for pfnCallback, allow COM marshaling to the blocked calling thread IE6+
  400. CTF_UNUSED = $00000080; // IE7+
  401. CTF_INHERITWOW64 = $00000100; // new thread should inherit the wow64 disable state for the file system redirector IE7+
  402. CTF_WAIT_NO_REENTRANCY = $00000200; // don't allow re-entrancy when waiting for the sync proc, this won't work with marshalled objects or SendMessages() from the sync proc Vista+
  403. //#if (NTDDI_VERSION >= NTDDI_WIN7)
  404. CTF_KEYBOARD_LOCALE = $00000400; // carry the keyboard locale from creating to created thread
  405. CTF_OLEINITIALIZE = $00000800; // init OLE on the created thread (this will also init COM as STA)
  406. CTF_COINIT_MTA = $00001000; // init COM as MTA for the created thread
  407. CTF_NOADDREFLIB = $00002000; // this flag is the opposite of CTF_FREELIBANDEXIT that is now implicit as of Vista
  408. // this avoids the LoadLibrary/FreeLibraryAndExitThread calls that result in contention for the loader lock
  409. // only use this when the thread being created has some other means to ensure that the code
  410. // of the thread proc will remain loaded. This should not be used in the context of COM objects as those
  411. // need to ensure that the DLL stays loaded as COM will unload DLLs
  412. //#endif // (NTDDI_VERSION >= NTDDI_WIN7)
  413. OS_WINDOWS = 0; // Windows 9x vs. NT
  414. OS_NT = 1; // Windows 9x vs. NT
  415. OS_WIN95ORGREATER = 2; // Win95 or greater
  416. OS_NT4ORGREATER = 3; // NT4 or greater
  417. OS_WIN98ORGREATER = 5; // Win98 or greater
  418. OS_WIN98_GOLD = 6; // Win98 Gold (Version 4.10 build 1998)
  419. OS_WIN2000ORGREATER = 7; // Some derivative of Win2000
  420. // NOTE: these flags check explicitly for (dwMajorVersion == 5)
  421. OS_WIN2000PRO = 8; // Windows 2000 Professional (Workstation)
  422. OS_WIN2000SERVER = 9; // Windows 2000 Server
  423. OS_WIN2000ADVSERVER = 10; // Windows 2000 Advanced Server
  424. OS_WIN2000DATACENTER = 11; // Windows 2000 Data Center Server
  425. OS_WIN2000TERMINAL = 12; // Windows 2000 Terminal Server in "Application Server" mode (now simply called "Terminal Server")
  426. OS_EMBEDDED = 13; // Embedded Windows Edition
  427. OS_TERMINALCLIENT = 14; // Windows Terminal Client (eg user is comming in via tsclient)
  428. OS_TERMINALREMOTEADMIN = 15; // Terminal Server in "Remote Administration" mode
  429. OS_WIN95_GOLD = 16; // Windows 95 Gold (Version 4.0 Build 1995)
  430. OS_MEORGREATER = 17; // Windows Millennium (Version 5.0)
  431. OS_XPORGREATER = 18; // Windows XP or greater
  432. OS_HOME = 19; // Home Edition (eg NOT Professional, Server, Advanced Server, or Datacenter)
  433. OS_PROFESSIONAL = 20; // Professional (aka Workstation; eg NOT Server, Advanced Server, or Datacenter)
  434. OS_DATACENTER = 21; // Datacenter (eg NOT Server, Advanced Server, Professional, or Personal)
  435. OS_ADVSERVER = 22; // Advanced Server (eg NOT Datacenter, Server, Professional, or Personal)
  436. OS_SERVER = 23; // Server (eg NOT Datacenter, Advanced Server, Professional, or Personal)
  437. OS_TERMINALSERVER = 24; // Terminal Server - server running in what used to be called "Application Server" mode (now simply called "Terminal Server")
  438. OS_PERSONALTERMINALSERVER = 25; // Personal Terminal Server - per/pro machine running in single user TS mode
  439. OS_FASTUSERSWITCHING = 26; // Fast User Switching
  440. OS_WELCOMELOGONUI = 27; // New friendly logon UI
  441. OS_DOMAINMEMBER = 28; // Is this machine a member of a domain (eg NOT a workgroup)
  442. OS_ANYSERVER = 29; // is this machine any type of server? (eg datacenter or advanced server or server)?
  443. OS_WOW6432 = 30; // Is this process a 32-bit process running on an 64-bit platform?
  444. OS_WEBSERVER = 31; // Web Edition Server
  445. OS_SMALLBUSINESSSERVER = 32; // SBS Server
  446. OS_TABLETPC = 33; // Are we running on a TabletPC?
  447. OS_SERVERADMINUI = 34; // Should defaults lean towards those preferred by server administrators?
  448. OS_MEDIACENTER = 35; // eHome Freestyle Project
  449. OS_APPLIANCE = 36; // Windows .NET Appliance Server
  450. PERCEIVEDFLAG_UNDEFINED = $0000;
  451. PERCEIVEDFLAG_SOFTCODED = $0001;
  452. PERCEIVEDFLAG_HARDCODED = $0002;
  453. PERCEIVEDFLAG_NATIVESUPPORT = $0004;
  454. PERCEIVEDFLAG_GDIPLUS = $0010;
  455. PERCEIVEDFLAG_WMSDK = $0020;
  456. PERCEIVEDFLAG_ZIPFOLDER = $0040;
  457. function StrChrA(pszStart:PCSTR; wMatch:WORD):PCSTR;stdcall;external SHLWAPIDLL name 'StrChrA';
  458. function StrChrW(pszStart:PCWSTR; wMatch:WCHAR):PCWSTR;stdcall;external SHLWAPIDLL name 'StrChrW';
  459. function StrChrIA(pszStart:PCSTR; wMatch:WORD):PCSTR;stdcall;external SHLWAPIDLL name 'StrChrIA';
  460. function StrChrIW(pszStart:PCWSTR; wMatch:WCHAR):PCWSTR;stdcall;external SHLWAPIDLL name 'StrChrIW';
  461. function StrChrNW(pszStart:PCWSTR; wMatch:WCHAR; cchMax:UINT):PCWSTR;stdcall;external SHLWAPIDLL name 'StrChrNW';
  462. function StrChrNIW(pszStart:PCWSTR; wMatch:WCHAR; cchMax:UINT):PWSTR;stdcall;external SHLWAPIDLL name 'StrChrNIW';
  463. function StrCmpNA(psz1:PCSTR; psz2:PCSTR; nChar:longint):longint;stdcall;external SHLWAPIDLL name 'StrCmpNA';
  464. function StrCmpNW(psz1:PCWSTR; psz2:PCWSTR; nChar:longint):longint;stdcall;external SHLWAPIDLL name 'StrCmpNW';
  465. function StrCmpNIA(psz1:PCSTR; psz2:PCSTR; nChar:longint):longint;stdcall;external SHLWAPIDLL name 'StrCmpNIA';
  466. function StrCmpNIW(psz1:PCWSTR; psz2:PCWSTR; nChar:longint):longint;stdcall;external SHLWAPIDLL name 'StrCmpNIW';
  467. function StrCSpnA(pszStr:PCSTR; pszSet:PCSTR):longint;stdcall;external SHLWAPIDLL name 'StrCSpnA';
  468. function StrCSpnW(pszStr:PCWSTR; pszSet:PCWSTR):longint;stdcall;external SHLWAPIDLL name 'StrCSpnW';
  469. function StrCSpnIA(pszStr:PCSTR; pszSet:PCSTR):longint;stdcall;external SHLWAPIDLL name 'StrCSpnIA';
  470. function StrCSpnIW(pszStr:PCWSTR; pszSet:PCWSTR):longint;stdcall;external SHLWAPIDLL name 'StrCSpnIW';
  471. function StrDupA(pszSrch:PCSTR):PSTR;stdcall;external SHLWAPIDLL name 'StrDupA';
  472. function StrDupW(pszSrch:PCWSTR):PWSTR;stdcall;external SHLWAPIDLL name 'StrDupW';
  473. function StrFormatByteSizeEx(ull:ULONGLONG; flags:SFBS_FLAGS; pszBuf:PWSTR; cchBuf:UINT):HRESULT;stdcall;external SHLWAPIDLL name 'StrFormatByteSizeEx';
  474. function StrFormatByteSizeA(dw:DWORD; pszBuf:PSTR; cchBuf:UINT):PSTR;stdcall;external SHLWAPIDLL name 'StrFormatByteSizeA';
  475. function StrFormatByteSize64A(qdw:LONGLONG; pszBuf:PSTR; cchBuf:UINT):PSTR;stdcall;external SHLWAPIDLL name 'StrFormatByteSize64A';
  476. function StrFormatByteSizeW(qdw:LONGLONG; pszBuf:PWSTR; cchBuf:UINT):PWSTR;stdcall;external SHLWAPIDLL name 'StrFormatByteSizeW';
  477. function StrFormatKBSizeW(qdw:LONGLONG; pszBuf:PWSTR; cchBuf:UINT):PWSTR;stdcall;external SHLWAPIDLL name 'StrFormatKBSizeW';
  478. function StrFormatKBSizeA(qdw:LONGLONG; pszBuf:PSTR; cchBuf:UINT):PSTR;stdcall;external SHLWAPIDLL name 'StrFormatKBSizeA';
  479. function StrFromTimeIntervalA(pszOut:PSTR; cchMax:UINT; dwTimeMS:DWORD; digits:longint):longint;stdcall;external SHLWAPIDLL name 'StrFromTimeIntervalA';
  480. function StrFromTimeIntervalW(pszOut:PWSTR; cchMax:UINT; dwTimeMS:DWORD; digits:longint):longint;stdcall;external SHLWAPIDLL name 'StrFromTimeIntervalW';
  481. function StrIsIntlEqualA(fCaseSens:BOOL; pszString1:PCSTR; pszString2:PCSTR; nChar:longint):BOOL;stdcall;external SHLWAPIDLL name 'StrIsIntlEqualA';
  482. function StrIsIntlEqualW(fCaseSens:BOOL; pszString1:PCWSTR; pszString2:PCWSTR; nChar:longint):BOOL;stdcall;external SHLWAPIDLL name 'StrIsIntlEqualW';
  483. function StrNCatA(psz1:PSTR; psz2:PCSTR; cchMax:longint):PSTR;stdcall;external SHLWAPIDLL name 'StrNCatA';
  484. function StrNCatW(psz1:PWSTR; psz2:PCWSTR; cchMax:longint):PWSTR;stdcall;external SHLWAPIDLL name 'StrNCatW';
  485. function StrPBrkA(psz:PCSTR; pszSet:PCSTR):PCSTR;stdcall;external SHLWAPIDLL name 'StrPBrkA';
  486. function StrPBrkW(psz:PCWSTR; pszSet:PCWSTR):PCWSTR;stdcall;external SHLWAPIDLL name 'StrPBrkW';
  487. function StrRChrA(pszStart:PCSTR; pszEnd:PCSTR; wMatch:WORD):PCSTR;stdcall;external SHLWAPIDLL name 'StrRChrA';
  488. function StrRChrW(pszStart:PCWSTR; pszEnd:PCWSTR; wMatch:WCHAR):PCWSTR;stdcall;external SHLWAPIDLL name 'StrRChrW';
  489. function StrRChrIA(pszStart:PCSTR; pszEnd:PCSTR; wMatch:WORD):PCSTR;stdcall;external SHLWAPIDLL name 'StrRChrIA';
  490. function StrRChrIW(pszStart:PCWSTR; pszEnd:PCWSTR; wMatch:WCHAR):PCWSTR;stdcall;external SHLWAPIDLL name 'StrRChrIW';
  491. function StrRStrIA(pszSource:PCSTR; pszLast:PCSTR; pszSrch:PCSTR):PCSTR;stdcall;external SHLWAPIDLL name 'StrRStrIA';
  492. function StrRStrIW(pszSource:PCWSTR; pszLast:PCWSTR; pszSrch:PCWSTR):PCWSTR;stdcall;external SHLWAPIDLL name 'StrRStrIW';
  493. function StrSpnA(psz:PCSTR; pszSet:PCSTR):longint;stdcall;external SHLWAPIDLL name 'StrSpnA';
  494. function StrSpnW(psz:PCWSTR; pszSet:PCWSTR):longint;stdcall;external SHLWAPIDLL name 'StrSpnW';
  495. function StrStrA(pszFirst:PCSTR; pszSrch:PCSTR):PCSTR;stdcall;external SHLWAPIDLL name 'StrStrA';
  496. function StrStrW(pszFirst:PCWSTR; pszSrch:PCWSTR):PCWSTR;stdcall;external SHLWAPIDLL name 'StrStrW';
  497. function StrStrIA(pszFirst:PCSTR; pszSrch:PCSTR):PCSTR;stdcall;external SHLWAPIDLL name 'StrStrIA';
  498. function StrStrIW(pszFirst:PCWSTR; pszSrch:PCWSTR):PCWSTR;stdcall;external SHLWAPIDLL name 'StrStrIW';
  499. function StrStrNW(pszFirst:PCWSTR; pszSrch:PCWSTR; cchMax:UINT):PCWSTR;stdcall;external SHLWAPIDLL name 'StrStrNW';
  500. function StrStrNIW(pszFirst:PCWSTR; pszSrch:PCWSTR; cchMax:UINT):PCWSTR;stdcall;external SHLWAPIDLL name 'StrStrNIW';
  501. function StrToIntA(pszSrc:PCSTR):longint;stdcall;external SHLWAPIDLL name 'StrToIntA';
  502. function StrToIntW(pszSrc:PCWSTR):longint;stdcall;external SHLWAPIDLL name 'StrToIntW';
  503. function StrToIntExA(pszString:PCSTR; dwFlags:STIF_FLAGS; piRet:plongint):BOOL;stdcall;external SHLWAPIDLL name 'StrToIntExA';
  504. function StrToIntExW(pszString:PCWSTR; dwFlags:STIF_FLAGS; piRet:plongint):BOOL;stdcall;external SHLWAPIDLL name 'StrToIntExW';
  505. function StrToInt64ExA(pszString:PCSTR; dwFlags:STIF_FLAGS; pllRet:pLONGLONG):BOOL;stdcall;external SHLWAPIDLL name 'StrToInt64ExA';
  506. function StrToInt64ExW(pszString:PCWSTR; dwFlags:STIF_FLAGS; pllRet:pLONGLONG):BOOL;stdcall;external SHLWAPIDLL name 'StrToInt64ExW';
  507. function StrTrimA(psz:PSTR; pszTrimChars:PCSTR):BOOL;stdcall;external SHLWAPIDLL name 'StrTrimA';
  508. function StrTrimW(psz:PWSTR; pszTrimChars:PCWSTR):BOOL;stdcall;external SHLWAPIDLL name 'StrTrimW';
  509. function StrCatW(psz1:PWSTR; psz2:PCWSTR):PWSTR;stdcall;external SHLWAPIDLL name 'StrCatW';
  510. function StrCmpW(psz1:PCWSTR; psz2:PCWSTR):longint;stdcall;external SHLWAPIDLL name 'StrCmpW';
  511. function StrCmpIW(psz1:PCWSTR; psz2:PCWSTR):longint;stdcall;external SHLWAPIDLL name 'StrCmpIW';
  512. function StrCpyW(psz1:PWSTR; psz2:PCWSTR):PWSTR;stdcall;external SHLWAPIDLL name 'StrCpyW';
  513. function StrCpyNW(pszDst:PWSTR; pszSrc:PCWSTR; cchMax:longint):PWSTR;stdcall;external SHLWAPIDLL name 'StrCpyNW';
  514. function StrCatBuffW(pszDest:PWSTR; pszSrc:PCWSTR; cchDestBuffSize:longint):PWSTR;stdcall;external SHLWAPIDLL name 'StrCatBuffW';
  515. function StrCatBuffA(pszDest:PSTR; pszSrc:PCSTR; cchDestBuffSize:longint):PSTR;stdcall;external SHLWAPIDLL name 'StrCatBuffA';
  516. function ChrCmpIA(w1:WORD; w2:WORD):BOOL;stdcall;external SHLWAPIDLL name 'ChrCmpIA';
  517. function ChrCmpIW(w1:WCHAR; w2:WCHAR):BOOL;stdcall;external SHLWAPIDLL name 'ChrCmpIW';
  518. function StrRetToStrA(pstr:PSTRRET; pidl:PCUITEMID_CHILD; ppsz:PLPSTR):HRESULT;stdcall;external SHLWAPIDLL name 'StrRetToStrA';
  519. function StrRetToStrW(pstr:PSTRRET; pidl:PCUITEMID_CHILD; ppsz:PLPWSTR):HRESULT;stdcall;external SHLWAPIDLL name 'StrRetToStrW';
  520. function StrRetToBufA(pstr:PSTRRET; pidl:PCUITEMID_CHILD; pszBuf:LPSTR; cchBuf:UINT):HRESULT;stdcall;external SHLWAPIDLL name 'StrRetToBufA';
  521. function StrRetToBufW(pstr:PSTRRET; pidl:PCUITEMID_CHILD; pszBuf:LPWSTR; cchBuf:UINT):HRESULT;stdcall;external SHLWAPIDLL name 'StrRetToBufW';
  522. function SHStrDupA(psz:LPCSTR; ppwsz:PLPWSTR):HRESULT;stdcall;external SHLWAPIDLL name 'SHStrDupA';
  523. function SHStrDupW(psz:LPCWSTR; ppwsz:PLPWSTR):HRESULT;stdcall;external SHLWAPIDLL name 'SHStrDupW';
  524. function StrCmpLogicalW(psz1:PCWSTR; psz2:PCWSTR):longint;stdcall;external SHLWAPIDLL name 'StrCmpLogicalW';
  525. function StrCatChainW(pszDst:PWSTR; cchDst:DWORD; ichAt:DWORD; pszSrc:PCWSTR):DWORD;stdcall;external SHLWAPIDLL name 'StrCatChainW';
  526. function StrRetToBSTR(pstr:PSTRRET; pidl:PCUITEMID_CHILD; out pbstr:BSTR):HRESULT;stdcall;external SHLWAPIDLL name 'StrRetToBSTR';
  527. function SHLoadIndirectString(pszSource:PCWSTR; pszOutBuf:PWSTR; cchOutBuf:UINT; ppvReserved:Ppointer):HRESULT;stdcall;external SHLWAPIDLL name 'SHLoadIndirectString';
  528. function IsCharSpaceA(wch:CHAR):BOOL;stdcall;external SHLWAPIDLL name 'IsCharSpaceA';
  529. function IsCharSpaceW(wch:WCHAR):BOOL;stdcall;external SHLWAPIDLL name 'IsCharSpaceW';
  530. function StrCmpCA(pszStr1:LPCSTR; pszStr2:LPCSTR):longint;stdcall;external SHLWAPIDLL name 'StrCmpCA';
  531. function StrCmpCW(pszStr1:LPCWSTR; pszStr2:LPCWSTR):longint;stdcall;external SHLWAPIDLL name 'StrCmpCW';
  532. function StrCmpICA(pszStr1:LPCSTR; pszStr2:LPCSTR):longint;stdcall;external SHLWAPIDLL name 'StrCmpICA';
  533. function StrCmpICW(pszStr1:LPCWSTR; pszStr2:LPCWSTR):longint;stdcall;external SHLWAPIDLL name 'StrCmpICW';
  534. function StrCmpNCA(pszStr1:LPCSTR; pszStr2:LPCSTR; nChar:longint):longint;stdcall;external SHLWAPIDLL name 'StrCmpNCA';
  535. function StrCmpNCW(pszStr1:LPCWSTR; pszStr2:LPCWSTR; nChar:longint):longint;stdcall;external SHLWAPIDLL name 'StrCmpNCW';
  536. function StrCmpNICA(pszStr1:LPCSTR; pszStr2:LPCSTR; nChar:longint):longint;stdcall;external SHLWAPIDLL name 'StrCmpNICA';
  537. function StrCmpNICW(pszStr1:LPCWSTR; pszStr2:LPCWSTR; nChar:longint):longint;stdcall;external SHLWAPIDLL name 'StrCmpNICW';
  538. function IntlStrEqWorkerA(fCaseSens:BOOL; lpString1:LPCSTR; lpString2:LPCSTR; nChar:longint):BOOL;stdcall;external SHLWAPIDLL name 'IntlStrEqWorkerA';
  539. function IntlStrEqWorkerW(fCaseSens:BOOL; lpString1:LPCWSTR; lpString2:LPCWSTR; nChar:longint):BOOL;stdcall;external SHLWAPIDLL name 'IntlStrEqWorkerW';
  540. function PathAddBackslashA(pszPath:LPSTR):LPSTR;stdcall;external SHLWAPIDLL name 'PathAddBackslashA';
  541. function PathAddBackslashW(pszPath:LPWSTR):LPWSTR;stdcall;external SHLWAPIDLL name 'PathAddBackslashW';
  542. function PathAddExtensionA(pszPath:LPSTR; pszExt:LPCSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathAddExtensionA';
  543. function PathAddExtensionW(pszPath:LPWSTR; pszExt:LPCWSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathAddExtensionW';
  544. function PathAppendA(pszPath:LPSTR; pszMore:LPCSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathAppendA';
  545. function PathAppendW(pszPath:LPWSTR; pszMore:LPCWSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathAppendW';
  546. function PathBuildRootA(pszRoot:LPSTR; iDrive:longint):LPSTR;stdcall;external SHLWAPIDLL name 'PathBuildRootA';
  547. function PathBuildRootW(pszRoot:LPWSTR; iDrive:longint):LPWSTR;stdcall;external SHLWAPIDLL name 'PathBuildRootW';
  548. function PathCanonicalizeA(pszBuf:LPSTR; pszPath:LPCSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathCanonicalizeA';
  549. function PathCanonicalizeW(pszBuf:LPWSTR; pszPath:LPCWSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathCanonicalizeW';
  550. function PathCombineA(pszDest:LPSTR; pszDir:LPCSTR; pszFile:LPCSTR):LPSTR;stdcall;external SHLWAPIDLL name 'PathCombineA';
  551. function PathCombineW(pszDest:LPWSTR; pszDir:LPCWSTR; pszFile:LPCWSTR):LPWSTR;stdcall;external SHLWAPIDLL name 'PathCombineW';
  552. function PathCompactPathA(hDC:HDC; pszPath:LPSTR; dx:UINT):BOOL;stdcall;external SHLWAPIDLL name 'PathCompactPathA';
  553. function PathCompactPathW(hDC:HDC; pszPath:LPWSTR; dx:UINT):BOOL;stdcall;external SHLWAPIDLL name 'PathCompactPathW';
  554. function PathCompactPathExA(pszOut:LPSTR; pszSrc:LPCSTR; cchMax:UINT; dwFlags:DWORD):BOOL;stdcall;external SHLWAPIDLL name 'PathCompactPathExA';
  555. function PathCompactPathExW(pszOut:LPWSTR; pszSrc:LPCWSTR; cchMax:UINT; dwFlags:DWORD):BOOL;stdcall;external SHLWAPIDLL name 'PathCompactPathExW';
  556. function PathCommonPrefixA(pszFile1:LPCSTR; pszFile2:LPCSTR; achPath:LPSTR):longint;stdcall;external SHLWAPIDLL name 'PathCommonPrefixA';
  557. function PathCommonPrefixW(pszFile1:LPCWSTR; pszFile2:LPCWSTR; achPath:LPWSTR):longint;stdcall;external SHLWAPIDLL name 'PathCommonPrefixW';
  558. function PathFileExistsA(pszPath:LPCSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathFileExistsA';
  559. function PathFileExistsW(pszPath:LPCWSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathFileExistsW';
  560. function PathFindExtensionA(pszPath:LPCSTR):LPCSTR;stdcall;external SHLWAPIDLL name 'PathFindExtensionA';
  561. function PathFindExtensionW(pszPath:LPCWSTR):LPCWSTR;stdcall;external SHLWAPIDLL name 'PathFindExtensionW';
  562. function PathFindFileNameA(pszPath:LPCSTR):LPCSTR;stdcall;external SHLWAPIDLL name 'PathFindFileNameA';
  563. function PathFindFileNameW(pszPath:LPCWSTR):LPCWSTR;stdcall;external SHLWAPIDLL name 'PathFindFileNameW';
  564. function PathFindNextComponentA(pszPath:LPCSTR):LPCSTR;stdcall;external SHLWAPIDLL name 'PathFindNextComponentA';
  565. function PathFindNextComponentW(pszPath:LPCWSTR):LPCWSTR;stdcall;external SHLWAPIDLL name 'PathFindNextComponentW';
  566. function PathFindOnPathA(pszPath:LPSTR; ppszOtherDirs:PZPCSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathFindOnPathA';
  567. function PathFindOnPathW(pszPath:LPWSTR; ppszOtherDirs:PZPCWSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathFindOnPathW';
  568. function PathFindSuffixArrayA(pszPath:LPCSTR; apszSuffix:PLPSTR; iArraySize:longint):LPCSTR;stdcall;external SHLWAPIDLL name 'PathFindSuffixArrayA';
  569. function PathFindSuffixArrayW(pszPath:LPCWSTR; apszSuffix:PLPWSTR; iArraySize:longint):LPCWSTR;stdcall;external SHLWAPIDLL name 'PathFindSuffixArrayW';
  570. function PathGetArgsA(pszPath:LPCSTR):LPCSTR;stdcall;external SHLWAPIDLL name 'PathGetArgsA';
  571. function PathGetArgsW(pszPath:LPCWSTR):LPCWSTR;stdcall;external SHLWAPIDLL name 'PathGetArgsW';
  572. function PathIsLFNFileSpecA(pszName:LPCSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathIsLFNFileSpecA';
  573. function PathIsLFNFileSpecW(pszName:LPCWSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathIsLFNFileSpecW';
  574. function PathGetCharTypeA(ch:UCHAR):Uint;stdcall;external SHLWAPIDLL name 'PathGetCharTypeA';
  575. function PathGetCharTypeW(ch:WCHAR):Uint;stdcall;external SHLWAPIDLL name 'PathGetCharTypeW';
  576. function PathGetDriveNumberA(pszPath:LPCSTR):longint;stdcall;external SHLWAPIDLL name 'PathGetDriveNumberA';
  577. function PathGetDriveNumberW(pszPath:LPCWSTR):longint;stdcall;external SHLWAPIDLL name 'PathGetDriveNumberW';
  578. function PathIsDirectoryA(pszPath:LPCSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathIsDirectoryA';
  579. function PathIsDirectoryW(pszPath:LPCWSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathIsDirectoryW';
  580. function PathIsDirectoryEmptyA(pszPath:LPCSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathIsDirectoryEmptyA';
  581. function PathIsDirectoryEmptyW(pszPath:LPCWSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathIsDirectoryEmptyW';
  582. function PathIsFileSpecA(pszPath:LPCSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathIsFileSpecA';
  583. function PathIsFileSpecW(pszPath:LPCWSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathIsFileSpecW';
  584. function PathIsPrefixA(pszPrefix:LPCSTR; pszPath:LPCSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathIsPrefixA';
  585. function PathIsPrefixW(pszPrefix:LPCWSTR; pszPath:LPCWSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathIsPrefixW';
  586. function PathIsRelativeA(pszPath:LPCSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathIsRelativeA';
  587. function PathIsRelativeW(pszPath:LPCWSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathIsRelativeW';
  588. function PathIsRootA(pszPath:LPCSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathIsRootA';
  589. function PathIsRootW(pszPath:LPCWSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathIsRootW';
  590. function PathIsSameRootA(pszPath1:LPCSTR; pszPath2:LPCSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathIsSameRootA';
  591. function PathIsSameRootW(pszPath1:LPCWSTR; pszPath2:LPCWSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathIsSameRootW';
  592. function PathIsUNCA(pszPath:LPCSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathIsUNCA';
  593. function PathIsUNCW(pszPath:LPCWSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathIsUNCW';
  594. function PathIsNetworkPathA(pszPath:LPCSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathIsNetworkPathA';
  595. function PathIsNetworkPathW(pszPath:LPCWSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathIsNetworkPathW';
  596. function PathIsUNCServerA(pszPath:LPCSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathIsUNCServerA';
  597. function PathIsUNCServerW(pszPath:LPCWSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathIsUNCServerW';
  598. function PathIsUNCServerShareA(pszPath:LPCSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathIsUNCServerShareA';
  599. function PathIsUNCServerShareW(pszPath:LPCWSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathIsUNCServerShareW';
  600. function PathIsContentTypeA(pszPath:LPCSTR; pszContentType:LPCSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathIsContentTypeA';
  601. function PathIsContentTypeW(pszPath:LPCWSTR; pszContentType:LPCWSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathIsContentTypeW';
  602. function PathIsURLA(pszPath:LPCSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathIsURLA';
  603. function PathIsURLW(pszPath:LPCWSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathIsURLW';
  604. function PathMakePrettyA(pszPath:LPSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathMakePrettyA';
  605. function PathMakePrettyW(pszPath:LPWSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathMakePrettyW';
  606. function PathMatchSpecA(pszFile:LPCSTR; pszSpec:LPCSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathMatchSpecA';
  607. function PathMatchSpecW(pszFile:LPCWSTR; pszSpec:LPCWSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathMatchSpecW';
  608. function PathMatchSpecExA(pszFile:LPCSTR; pszSpec:LPCSTR; dwFlags:DWORD):HRESULT;stdcall;external SHLWAPIDLL name 'PathMatchSpecExA';
  609. function PathMatchSpecExW(pszFile:LPCWSTR; pszSpec:LPCWSTR; dwFlags:DWORD):HRESULT;stdcall;external SHLWAPIDLL name 'PathMatchSpecExW';
  610. function PathParseIconLocationA(pszIconFile:LPSTR):longint;stdcall;external SHLWAPIDLL name 'PathParseIconLocationA';
  611. function PathParseIconLocationW(pszIconFile:LPWSTR):longint;stdcall;external SHLWAPIDLL name 'PathParseIconLocationW';
  612. function PathQuoteSpacesA(lpsz:LPSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathQuoteSpacesA';
  613. function PathQuoteSpacesW(lpsz:LPWSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathQuoteSpacesW';
  614. function PathRelativePathToA(pszPath:LPSTR; pszFrom:LPCSTR; dwAttrFrom:DWORD; pszTo:LPCSTR; dwAttrTo:DWORD):BOOL;stdcall;external SHLWAPIDLL name 'PathRelativePathToA';
  615. function PathRelativePathToW(pszPath:LPWSTR; pszFrom:LPCWSTR; dwAttrFrom:DWORD; pszTo:LPCWSTR; dwAttrTo:DWORD):BOOL;stdcall;external SHLWAPIDLL name 'PathRelativePathToW';
  616. procedure PathRemoveArgsA(pszPath:LPSTR);stdcall;external SHLWAPIDLL name 'PathRemoveArgsA';
  617. procedure PathRemoveArgsW(pszPath:LPWSTR);stdcall;external SHLWAPIDLL name 'PathRemoveArgsW';
  618. function PathRemoveBackslashA(pszPath:LPSTR):LPSTR;stdcall;external SHLWAPIDLL name 'PathRemoveBackslashA';
  619. function PathRemoveBackslashW(pszPath:LPWSTR):LPWSTR;stdcall;external SHLWAPIDLL name 'PathRemoveBackslashW';
  620. procedure PathRemoveBlanksA(pszPath:LPSTR);stdcall;external SHLWAPIDLL name 'PathRemoveBlanksA';
  621. procedure PathRemoveBlanksW(pszPath:LPWSTR);stdcall;external SHLWAPIDLL name 'PathRemoveBlanksW';
  622. procedure PathRemoveExtensionA(pszPath:LPSTR);stdcall;external SHLWAPIDLL name 'PathRemoveExtensionA';
  623. procedure PathRemoveExtensionW(pszPath:LPWSTR);stdcall;external SHLWAPIDLL name 'PathRemoveExtensionW';
  624. function PathRemoveFileSpecA(pszPath:LPSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathRemoveFileSpecA';
  625. function PathRemoveFileSpecW(pszPath:LPWSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathRemoveFileSpecW';
  626. function PathRenameExtensionA(pszPath:LPSTR; pszExt:LPCSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathRenameExtensionA';
  627. function PathRenameExtensionW(pszPath:LPWSTR; pszExt:LPCWSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathRenameExtensionW';
  628. function PathSearchAndQualifyA(pszPath:LPCSTR; pszBuf:LPSTR; cchBuf:UINT):BOOL;stdcall;external SHLWAPIDLL name 'PathSearchAndQualifyA';
  629. function PathSearchAndQualifyW(pszPath:LPCWSTR; pszBuf:LPWSTR; cchBuf:UINT):BOOL;stdcall;external SHLWAPIDLL name 'PathSearchAndQualifyW';
  630. procedure PathSetDlgItemPathA(hDlg:HWND; id:longint; pszPath:LPCSTR);stdcall;external SHLWAPIDLL name 'PathSetDlgItemPathA';
  631. procedure PathSetDlgItemPathW(hDlg:HWND; id:longint; pszPath:LPCWSTR);stdcall;external SHLWAPIDLL name 'PathSetDlgItemPathW';
  632. function PathSkipRootA(pszPath:LPCSTR):LPCSTR;stdcall;external SHLWAPIDLL name 'PathSkipRootA';
  633. function PathSkipRootW(pszPath:LPCWSTR):LPCWSTR;stdcall;external SHLWAPIDLL name 'PathSkipRootW';
  634. procedure PathStripPathA(pszPath:LPSTR);stdcall;external SHLWAPIDLL name 'PathStripPathA';
  635. procedure PathStripPathW(pszPath:LPWSTR);stdcall;external SHLWAPIDLL name 'PathStripPathW';
  636. function PathStripToRootA(pszPath:LPSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathStripToRootA';
  637. function PathStripToRootW(pszPath:LPWSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathStripToRootW';
  638. function PathUnquoteSpacesA(lpsz:LPSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathUnquoteSpacesA';
  639. function PathUnquoteSpacesW(lpsz:LPWSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathUnquoteSpacesW';
  640. function PathMakeSystemFolderA(pszPath:LPCSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathMakeSystemFolderA';
  641. function PathMakeSystemFolderW(pszPath:LPCWSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathMakeSystemFolderW';
  642. function PathUnmakeSystemFolderA(pszPath:LPCSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathUnmakeSystemFolderA';
  643. function PathUnmakeSystemFolderW(pszPath:LPCWSTR):BOOL;stdcall;external SHLWAPIDLL name 'PathUnmakeSystemFolderW';
  644. function PathIsSystemFolderA(pszPath:LPCSTR; dwAttrb:DWORD):BOOL;stdcall;external SHLWAPIDLL name 'PathIsSystemFolderA';
  645. function PathIsSystemFolderW(pszPath:LPCWSTR; dwAttrb:DWORD):BOOL;stdcall;external SHLWAPIDLL name 'PathIsSystemFolderW';
  646. procedure PathUndecorateA(pszPath:LPSTR);stdcall;external SHLWAPIDLL name 'PathUndecorateA';
  647. procedure PathUndecorateW(pszPath:LPWSTR);stdcall;external SHLWAPIDLL name 'PathUndecorateW';
  648. function PathUnExpandEnvStringsA(pszPath:LPCSTR; pszBuf:LPSTR; cchBuf:UINT):BOOL;stdcall;external SHLWAPIDLL name 'PathUnExpandEnvStringsA';
  649. function PathUnExpandEnvStringsW(pszPath:LPCWSTR; pszBuf:LPWSTR; cchBuf:UINT):BOOL;stdcall;external SHLWAPIDLL name 'PathUnExpandEnvStringsW';
  650. function UrlCompareA(psz1:PCSTR; psz2:PCSTR; fIgnoreSlash:BOOL):longint;stdcall;external SHLWAPIDLL name 'UrlCompareA';
  651. function UrlCompareW(psz1:PCWSTR; psz2:PCWSTR; fIgnoreSlash:BOOL):longint;stdcall;external SHLWAPIDLL name 'UrlCompareW';
  652. function UrlCombineA(pszBase:PCSTR; pszRelative:PCSTR; pszCombined:PSTR; pcchCombined:PDWORD; dwFlags:DWORD):HRESULT;stdcall;external SHLWAPIDLL name 'UrlCombineA';
  653. function UrlCombineW(pszBase:PCWSTR; pszRelative:PCWSTR; pszCombined:PWSTR; pcchCombined:PDWORD; dwFlags:DWORD):HRESULT;stdcall;external SHLWAPIDLL name 'UrlCombineW';
  654. function UrlCanonicalizeA(pszUrl:PCSTR; pszCanonicalized:PSTR; pcchCanonicalized:PDWORD; dwFlags:DWORD):HRESULT;stdcall;external SHLWAPIDLL name 'UrlCanonicalizeA';
  655. function UrlCanonicalizeW(pszUrl:PCWSTR; pszCanonicalized:PWSTR; pcchCanonicalized:PDWORD; dwFlags:DWORD):HRESULT;stdcall;external SHLWAPIDLL name 'UrlCanonicalizeW';
  656. function UrlIsOpaqueA(pszURL:PCSTR):BOOL;stdcall;external SHLWAPIDLL name 'UrlIsOpaqueA';
  657. function UrlIsOpaqueW(pszURL:PCWSTR):BOOL;stdcall;external SHLWAPIDLL name 'UrlIsOpaqueW';
  658. function UrlIsNoHistoryA(pszURL:PCSTR):BOOL;stdcall;external SHLWAPIDLL name 'UrlIsNoHistoryA';
  659. function UrlIsNoHistoryW(pszURL:PCWSTR):BOOL;stdcall;external SHLWAPIDLL name 'UrlIsNoHistoryW';
  660. function UrlIsA(pszUrl:PCSTR; UrlIs:URLIS):BOOL;stdcall;external SHLWAPIDLL name 'UrlIsA';
  661. function UrlIsW(pszUrl:PCWSTR; UrlIs:URLIS):BOOL;stdcall;external SHLWAPIDLL name 'UrlIsW';
  662. function UrlGetLocationA(pszURL:PCSTR):LPCSTR;stdcall;external SHLWAPIDLL name 'UrlGetLocationA';
  663. function UrlGetLocationW(pszURL:PCWSTR):LPCWSTR;stdcall;external SHLWAPIDLL name 'UrlGetLocationW';
  664. function UrlUnescapeA(pszUrl:PSTR; pszUnescaped:PSTR; pcchUnescaped:PDWORD; dwFlags:DWORD):HRESULT;stdcall;external SHLWAPIDLL name 'UrlUnescapeA';
  665. function UrlUnescapeW(pszUrl:PWSTR; pszUnescaped:PWSTR; pcchUnescaped:PDWORD; dwFlags:DWORD):HRESULT;stdcall;external SHLWAPIDLL name 'UrlUnescapeW';
  666. function UrlEscapeA(pszUrl:PCSTR; pszEscaped:PSTR; pcchEscaped:PDWORD; dwFlags:DWORD):HRESULT;stdcall;external SHLWAPIDLL name 'UrlEscapeA';
  667. function UrlEscapeW(pszUrl:PCWSTR; pszEscaped:PWSTR; pcchEscaped:PDWORD; dwFlags:DWORD):HRESULT;stdcall;external SHLWAPIDLL name 'UrlEscapeW';
  668. function UrlCreateFromPathA(pszPath:PCSTR; pszUrl:PSTR; pcchUrl:PDWORD; dwFlags:DWORD):HRESULT;stdcall;external SHLWAPIDLL name 'UrlCreateFromPathA';
  669. function UrlCreateFromPathW(pszPath:PCWSTR; pszUrl:PWSTR; pcchUrl:PDWORD; dwFlags:DWORD):HRESULT;stdcall;external SHLWAPIDLL name 'UrlCreateFromPathW';
  670. function PathCreateFromUrlA(pszUrl:PCSTR; pszPath:PSTR; pcchPath:PDWORD; dwFlags:DWORD):HRESULT;stdcall;external SHLWAPIDLL name 'PathCreateFromUrlA';
  671. function PathCreateFromUrlW(pszUrl:PCWSTR; pszPath:PWSTR; pcchPath:PDWORD; dwFlags:DWORD):HRESULT;stdcall;external SHLWAPIDLL name 'PathCreateFromUrlW';
  672. function PathCreateFromUrlAlloc(pszIn:PCWSTR; out ppszOut:PWSTR; dwFlags:DWORD):HRESULT;stdcall;external SHLWAPIDLL name 'PathCreateFromUrlAlloc';
  673. function UrlHashA(pszUrl:PCSTR; pbHash:PBYTE; cbHash:DWORD):HRESULT;stdcall;external SHLWAPIDLL name 'UrlHashA';
  674. function UrlHashW(pszUrl:PCWSTR; pbHash:PBYTE; cbHash:DWORD):HRESULT;stdcall;external SHLWAPIDLL name 'UrlHashW';
  675. function UrlGetPartW(pszIn:PCWSTR; pszOut:PWSTR; pcchOut:PDWORD; dwPart:DWORD; dwFlags:DWORD):HRESULT;stdcall;external SHLWAPIDLL name 'UrlGetPartW';
  676. function UrlGetPartA(pszIn:PCSTR; pszOut:PSTR; pcchOut:PDWORD; dwPart:DWORD; dwFlags:DWORD):HRESULT;stdcall;external SHLWAPIDLL name 'UrlGetPartA';
  677. function UrlApplySchemeA(pszIn:PCSTR; pszOut:PSTR; pcchOut:PDWORD; dwFlags:DWORD):HRESULT;stdcall;external SHLWAPIDLL name 'UrlApplySchemeA';
  678. function UrlApplySchemeW(pszIn:PCWSTR; pszOut:PWSTR; pcchOut:PDWORD; dwFlags:DWORD):HRESULT;stdcall;external SHLWAPIDLL name 'UrlApplySchemeW';
  679. function HashData(pbData:PBYTE; cbData:DWORD; pbHash:PBYTE; cbHash:DWORD):HRESULT;stdcall;external SHLWAPIDLL name 'HashData';
  680. function UrlFixupW(pcszUrl:PCWSTR; pszTranslatedUrl:PWSTR; cchMax:DWORD):HRESULT;stdcall;external SHLWAPIDLL name 'UrlFixupW';
  681. function SHDeleteEmptyKeyA(hKey:HKEY; pszSubKey:LPCSTR):LSTATUS;stdcall;external SHLWAPIDLL name 'SHDeleteEmptyKeyA';
  682. function SHDeleteEmptyKeyW(hKey:HKEY; pszSubKey:LPCWSTR):LSTATUS;stdcall;external SHLWAPIDLL name 'SHDeleteEmptyKeyW';
  683. function SHDeleteKeyA(hKey:HKEY; pszSubKey:LPCSTR):LSTATUS;stdcall;external SHLWAPIDLL name 'SHDeleteKeyA';
  684. function SHDeleteKeyW(hKey:HKEY; pszSubKey:LPCWSTR):LSTATUS;stdcall;external SHLWAPIDLL name 'SHDeleteKeyW';
  685. function SHRegDuplicateHKey(hKey:HKEY):HKEY;stdcall;external SHLWAPIDLL name 'SHRegDuplicateHKey';
  686. function SHDeleteValueA(hKey:HKEY; pszSubKey:LPCSTR; pszValue:LPCSTR):LSTATUS;stdcall;external SHLWAPIDLL name 'SHDeleteValueA';
  687. function SHDeleteValueW(hKey:HKEY; pszSubKey:LPCWSTR; pszValue:LPCWSTR):LSTATUS;stdcall;external SHLWAPIDLL name 'SHDeleteValueW';
  688. {LSTATUS SHGetValueA( }
  689. {LSTATUS SHGetValueW( }
  690. function SHSetValueA(hKey:HKEY; pszSubKey:LPCSTR; pszValue:LPCSTR; dwType:DWORD; pvData:LPCVOID;
  691. cbData:DWORD):LSTATUS;stdcall;external SHLWAPIDLL name 'SHSetValueA';
  692. function SHSetValueW(hKey:HKEY; pszSubKey:LPCWSTR; pszValue:LPCWSTR; dwType:DWORD; pvData:LPCVOID;
  693. cbData:DWORD):LSTATUS;stdcall;external SHLWAPIDLL name 'SHSetValueW';
  694. function SHRegGetValueA(hKey:HKEY; pszSubKey:LPCSTR; pszValue:LPCSTR; srrfFlags:SRRF; pdwType:PDWORD;
  695. pvData:pointer; pcbData:PDWORD):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegGetValueA';
  696. function SHRegGetValueW(hKey:HKEY; pszSubKey:LPCWSTR; pszValue:LPCWSTR; srrfFlags:SRRF; pdwType:PDWORD;
  697. pvData:pointer; pcbData:PDWORD):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegGetValueW';
  698. function SHRegSetValue(hkey:HKEY; pszSubKey:LPCWSTR; pszValue:LPCWSTR; srrfFlags:SRRF; dwType:DWORD;
  699. pvData:LPCVOID; cbData:DWORD):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegSetValue';
  700. function SHRegGetValueFromHKCUHKLM(pwszKey:PCWSTR; pwszValue:PCWSTR; srrfFlags:SRRF; pdwType:PDWORD; pvData:pointer;
  701. pcbData:PDWORD):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegGetValueFromHKCUHKLM';
  702. function SHQueryValueExA(hkey:HKEY; pszValue:LPCSTR; pdwReserved:PDWORD; pdwType:PDWORD; pvData:pointer;
  703. pcbData:PDWORD):LSTATUS;stdcall;external SHLWAPIDLL name 'SHQueryValueExA';
  704. function SHQueryValueExW(hkey:HKEY; pszValue:LPCWSTR; pdwReserved:PDWORD; pdwType:PDWORD; pvData:pointer;
  705. pcbData:PDWORD):LSTATUS;stdcall;external SHLWAPIDLL name 'SHQueryValueExW';
  706. function SHEnumKeyExA(hKey:HKEY; dwIndex:DWORD; pszName:LPSTR; pcchName:LPDWORD):LSTATUS;stdcall;external SHLWAPIDLL name 'SHEnumKeyExA';
  707. function SHEnumKeyExW(hKey:HKEY; dwIndex:DWORD; pszName:LPWSTR; pcchName:LPDWORD):LSTATUS;stdcall;external SHLWAPIDLL name 'SHEnumKeyExW';
  708. function SHEnumValueA(hKey:HKEY; dwIndex:DWORD; pszValueName:PSTR; pcchValueName:LPDWORD; pdwType:LPDWORD;
  709. pvData:pointer; pcbData:LPDWORD):LSTATUS;stdcall;external SHLWAPIDLL name 'SHEnumValueA';
  710. function SHEnumValueW(hKey:HKEY; dwIndex:DWORD; pszValueName:PWSTR; pcchValueName:LPDWORD; pdwType:LPDWORD;
  711. pvData:pointer; pcbData:LPDWORD):LSTATUS;stdcall;external SHLWAPIDLL name 'SHEnumValueW';
  712. function SHQueryInfoKeyA(hKey:HKEY; pcSubKeys:LPDWORD; pcchMaxSubKeyLen:LPDWORD; pcValues:LPDWORD; pcchMaxValueNameLen:LPDWORD):LSTATUS;stdcall;external SHLWAPIDLL name 'SHQueryInfoKeyA';
  713. function SHQueryInfoKeyW(hKey:HKEY; pcSubKeys:LPDWORD; pcchMaxSubKeyLen:LPDWORD; pcValues:LPDWORD; pcchMaxValueNameLen:LPDWORD):LSTATUS;stdcall;external SHLWAPIDLL name 'SHQueryInfoKeyW';
  714. function SHCopyKeyA(_hKeySrc:HKEY; pszSrcSubKey:LPCSTR; _hKeyDest:HKEY; fReserved:DWORD):LSTATUS;stdcall;external SHLWAPIDLL name 'SHCopyKeyA';
  715. function SHCopyKeyW(_hKeySrc:HKEY; pszSrcSubKey:LPCWSTR; _hKeyDest:HKEY; fReserved:DWORD):LSTATUS;stdcall;external SHLWAPIDLL name 'SHCopyKeyW';
  716. function SHRegGetPathA(hKey:HKEY; pcszSubKey:LPCSTR; pcszValue:LPCSTR; pszPath:LPSTR; dwFlags:DWORD):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegGetPathA';
  717. function SHRegGetPathW(hKey:HKEY; pcszSubKey:LPCWSTR; pcszValue:LPCWSTR; pszPath:LPWSTR; dwFlags:DWORD):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegGetPathW';
  718. function SHRegSetPathA(hKey:HKEY; pcszSubKey:LPCSTR; pcszValue:LPCSTR; pcszPath:LPCSTR; dwFlags:DWORD):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegSetPathA';
  719. function SHRegSetPathW(hKey:HKEY; pcszSubKey:LPCWSTR; pcszValue:LPCWSTR; pcszPath:LPCWSTR; dwFlags:DWORD):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegSetPathW';
  720. function SHRegCreateUSKeyA(pszPath:LPCSTR; samDesired:REGSAM; hRelativeUSKey:HUSKEY; phNewUSKey:PHUSKEY; dwFlags:DWORD):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegCreateUSKeyA';
  721. function SHRegCreateUSKeyW(pwzPath:LPCWSTR; samDesired:REGSAM; hRelativeUSKey:HUSKEY; phNewUSKey:PHUSKEY; dwFlags:DWORD):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegCreateUSKeyW';
  722. function SHRegOpenUSKeyA(pszPath:LPCSTR; samDesired:REGSAM; hRelativeUSKey:HUSKEY; phNewUSKey:PHUSKEY; fIgnoreHKCU:BOOL):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegOpenUSKeyA';
  723. function SHRegOpenUSKeyW(pwzPath:LPCWSTR; samDesired:REGSAM; hRelativeUSKey:HUSKEY; phNewUSKey:PHUSKEY; fIgnoreHKCU:BOOL):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegOpenUSKeyW';
  724. function SHRegQueryUSValueA(hUSKey:HUSKEY; pszValue:LPCSTR; pdwType:PDWORD; pvData:pointer; pcbData:PDWORD;
  725. fIgnoreHKCU:BOOL; pvDefaultData:pointer; dwDefaultDataSize:DWORD):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegQueryUSValueA';
  726. function SHRegQueryUSValueW(hUSKey:HUSKEY; pszValue:LPCWSTR; pdwType:PDWORD; pvData:pointer; pcbData:PDWORD;
  727. fIgnoreHKCU:BOOL; pvDefaultData:pointer; dwDefaultDataSize:DWORD):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegQueryUSValueW';
  728. (* Const before type ignored *)
  729. function SHRegWriteUSValueA(hUSKey:HUSKEY; pszValue:LPCSTR; dwType:DWORD; pvData:pointer; cbData:DWORD;
  730. dwFlags:DWORD):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegWriteUSValueA';
  731. (* Const before type ignored *)
  732. function SHRegWriteUSValueW(hUSKey:HUSKEY; pwzValue:LPCWSTR; dwType:DWORD; pvData:pointer; cbData:DWORD;
  733. dwFlags:DWORD):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegWriteUSValueW';
  734. function SHRegDeleteUSValueA(hUSKey:HUSKEY; pszValue:LPCSTR; delRegFlags:SHREGDEL_FLAGS):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegDeleteUSValueA';
  735. function SHRegDeleteUSValueW(hUSKey:HUSKEY; pwzValue:LPCWSTR; delRegFlags:SHREGDEL_FLAGS):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegDeleteUSValueW';
  736. function SHRegDeleteEmptyUSKeyW(hUSKey:HUSKEY; pwzSubKey:LPCWSTR; delRegFlags:SHREGDEL_FLAGS):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegDeleteEmptyUSKeyW';
  737. function SHRegDeleteEmptyUSKeyA(hUSKey:HUSKEY; pszSubKey:LPCSTR; delRegFlags:SHREGDEL_FLAGS):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegDeleteEmptyUSKeyA';
  738. function SHRegEnumUSKeyA(hUSKey:HUSKEY; dwIndex:DWORD; pszName:LPSTR; pcchName:LPDWORD; enumRegFlags:SHREGENUM_FLAGS):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegEnumUSKeyA';
  739. function SHRegEnumUSKeyW(hUSKey:HUSKEY; dwIndex:DWORD; pwzName:LPWSTR; pcchName:LPDWORD; enumRegFlags:SHREGENUM_FLAGS):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegEnumUSKeyW';
  740. function SHRegEnumUSValueA(hUSkey:HUSKEY; dwIndex:DWORD; pszValueName:LPSTR; pcchValueName:LPDWORD; pdwType:LPDWORD;
  741. pvData:pointer; pcbData:LPDWORD; enumRegFlags:SHREGENUM_FLAGS):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegEnumUSValueA';
  742. function SHRegEnumUSValueW(hUSkey:HUSKEY; dwIndex:DWORD; pszValueName:LPWSTR; pcchValueName:LPDWORD; pdwType:LPDWORD;
  743. pvData:pointer; pcbData:LPDWORD; enumRegFlags:SHREGENUM_FLAGS):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegEnumUSValueW';
  744. function SHRegQueryInfoUSKeyA(hUSKey:HUSKEY; pcSubKeys:LPDWORD; pcchMaxSubKeyLen:LPDWORD; pcValues:LPDWORD; pcchMaxValueNameLen:LPDWORD;
  745. enumRegFlags:SHREGENUM_FLAGS):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegQueryInfoUSKeyA';
  746. function SHRegQueryInfoUSKeyW(hUSKey:HUSKEY; pcSubKeys:LPDWORD; pcchMaxSubKeyLen:LPDWORD; pcValues:LPDWORD; pcchMaxValueNameLen:LPDWORD;
  747. enumRegFlags:SHREGENUM_FLAGS):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegQueryInfoUSKeyW';
  748. function SHRegCloseUSKey(hUSKey:HUSKEY):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegCloseUSKey';
  749. (* Const before type ignored *)
  750. function SHRegSetUSValueA(pszSubKey:LPCSTR; pszValue:LPCSTR; dwType:DWORD; pvData:pointer; cbData:DWORD;
  751. dwFlags:DWORD):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegSetUSValueA';
  752. (* Const before type ignored *)
  753. function SHRegSetUSValueW(pwzSubKey:LPCWSTR; pwzValue:LPCWSTR; dwType:DWORD; pvData:pointer; cbData:DWORD;
  754. dwFlags:DWORD):LSTATUS;stdcall;external SHLWAPIDLL name 'SHRegSetUSValueW';
  755. function SHRegGetIntW(hk:HKEY; pwzKey:PCWSTR; iDefault:longint):longint;stdcall;external SHLWAPIDLL name 'SHRegGetIntW';
  756. function SHRegGetBoolUSValueA(pszSubKey:LPCSTR; pszValue:LPCSTR; fIgnoreHKCU:BOOL; fDefault:BOOL):BOOL;stdcall;external SHLWAPIDLL name 'SHRegGetBoolUSValueA';
  757. function SHRegGetBoolUSValueW(pszSubKey:LPCWSTR; pszValue:LPCWSTR; fIgnoreHKCU:BOOL; fDefault:BOOL):BOOL;stdcall;external SHLWAPIDLL name 'SHRegGetBoolUSValueW';
  758. function AssocCreate(clsid:CLSID; riid:REFIID; ppv:Ppointer):HRESULT;stdcall;external SHLWAPIDLL name 'AssocCreate';
  759. function AssocQueryStringA(flags:ASSOCF; str:ASSOCSTR; pszAssoc:LPCSTR; pszExtra:LPCSTR; pszOut:LPSTR;
  760. pcchOut:PDWORD):HRESULT;stdcall;external SHLWAPIDLL name 'AssocQueryStringA';
  761. function AssocQueryStringW(flags:ASSOCF; str:ASSOCSTR; pszAssoc:LPCWSTR; pszExtra:LPCWSTR; pszOut:LPWSTR;
  762. pcchOut:PDWORD):HRESULT;stdcall;external SHLWAPIDLL name 'AssocQueryStringW';
  763. function AssocQueryStringByKeyA(flags:ASSOCF; str:ASSOCSTR; hkAssoc:HKEY; pszExtra:LPCSTR; pszOut:LPSTR;
  764. pcchOut:PDWORD):HRESULT;stdcall;external SHLWAPIDLL name 'AssocQueryStringByKeyA';
  765. function AssocQueryStringByKeyW(flags:ASSOCF; str:ASSOCSTR; hkAssoc:HKEY; pszExtra:LPCWSTR; pszOut:LPWSTR;
  766. pcchOut:PDWORD):HRESULT;stdcall;external SHLWAPIDLL name 'AssocQueryStringByKeyW';
  767. function AssocQueryKeyA(flags:ASSOCF; key:ASSOCKEY; pszAssoc:LPCSTR; pszExtra:LPCSTR; phkeyOut:PHKEY):HRESULT;stdcall;external SHLWAPIDLL name 'AssocQueryKeyA';
  768. function AssocQueryKeyW(flags:ASSOCF; key:ASSOCKEY; pszAssoc:LPCWSTR; pszExtra:LPCWSTR; phkeyOut:PHKEY):HRESULT;stdcall;external SHLWAPIDLL name 'AssocQueryKeyW';
  769. function AssocIsDangerous(pszAssoc:PCWSTR):BOOL;stdcall;external SHLWAPIDLL name 'AssocIsDangerous';
  770. { these are cdecl varargs }
  771. function wvnsprintfA(pszDest : PSTR;cchDest : WINT; pszFmt:PCSTR ):integer; cdecl;varargs; external SHLWAPIDLL name 'wvnsprintfA';
  772. function wvnsprintfW(pszDest :PWSTR;cchDest : WINT; pszFmt:PCWSTR ):integer; cdecl;varargs; external SHLWAPIDLL name 'wvnsprintfW';
  773. function wnsprintfA (pszDest : PSTR;cchDest : WINT; pszFmt:PCSTR ):integer; cdecl;varargs; external SHLWAPIDLL name 'wnsprintfA';
  774. function wnsprintfW (pszDest :PWSTR;cchDest : WINT; pszFmt:PCWSTR ):integer; cdecl;varargs; external SHLWAPIDLL name 'wnsprintfW';
  775. function ParseURLA(pcszURL:LPCSTR; ppu:PPARSEDURLA):HRESULT;stdcall;external SHLWAPIDLL name 'ParseURLA';
  776. function ParseURLW(pcszURL:LPCWSTR; ppu:PPARSEDURLW):HRESULT;stdcall;external SHLWAPIDLL name 'ParseURLW';
  777. function AssocGetPerceivedType(pszExt:PCWSTR; ptype:PPERCEIVED; pflag:PPERCEIVEDFLAG; ppszType:PLPWSTR):HRESULT;stdcall;external SHLWAPIDLL name 'AssocGetPerceivedType';
  778. function SHOpenRegStreamA(hKey:HKEY; pszSubkey:LPCSTR; pszValue:LPCSTR; grfMode:DWORD):IStream;stdcall;external SHLWAPIDLL name 'SHOpenRegStreamA';
  779. function SHOpenRegStreamW(hKey:HKEY; pszSubkey:LPCWSTR; pszValue:LPCWSTR; grfMode:DWORD):IStream;stdcall;external SHLWAPIDLL name 'SHOpenRegStreamW';
  780. function SHOpenRegStream2A(hKey:HKEY; pszSubkey:LPCSTR; pszValue:LPCSTR; grfMode:DWORD):IStream;stdcall;external SHLWAPIDLL name 'SHOpenRegStream2A';
  781. function SHOpenRegStream2W(hKey:HKEY; pszSubkey:LPCWSTR; pszValue:LPCWSTR; grfMode:DWORD):IStream;stdcall;external SHLWAPIDLL name 'SHOpenRegStream2W';
  782. function SHCreateStreamOnFileA(pszFile:LPCSTR; grfMode:DWORD; out ppstm:IStream):HRESULT;stdcall;external SHLWAPIDLL name 'SHCreateStreamOnFileA';
  783. function SHCreateStreamOnFileW(pszFile:LPCWSTR; grfMode:DWORD; out ppstm:IStream):HRESULT;stdcall;external SHLWAPIDLL name 'SHCreateStreamOnFileW';
  784. function SHCreateStreamOnFileEx(pszFile:LPCWSTR; grfMode:DWORD; dwAttributes:DWORD; fCreate:BOOL; pstmTemplate:IStream;
  785. out ppstm:IStream):HRESULT;stdcall;external SHLWAPIDLL name 'SHCreateStreamOnFileEx';
  786. (* Const before type ignored *)
  787. function SHCreateMemStream(pInit:PBYTE; cbInit:UINT):IStream;stdcall;external SHLWAPIDLL name 'SHCreateMemStream';
  788. function GetAcceptLanguagesA(pszLanguages:LPSTR; pcchLanguages:PDWORD):HRESULT;stdcall;external SHLWAPIDLL name 'GetAcceptLanguagesA';
  789. function GetAcceptLanguagesW(pszLanguages:LPWSTR; pcchLanguages:PDWORD):HRESULT;stdcall;external SHLWAPIDLL name 'GetAcceptLanguagesW';
  790. procedure IUnknown_Set(out ppunk:IUnknown; punk:IUnknown);stdcall;external SHLWAPIDLL name 'IUnknown_Set';
  791. procedure IUnknown_AtomicRelease(ppunk:Ppointer);stdcall;external SHLWAPIDLL name 'IUnknown_AtomicRelease';
  792. function IUnknown_GetWindow(punk:IUnknown; phwnd:PHWND):HRESULT;stdcall;external SHLWAPIDLL name 'IUnknown_GetWindow';
  793. function IUnknown_SetSite( punk:IUnknown; punkSite:IUnknown):HRESULT;stdcall;external SHLWAPIDLL name 'IUnknown_SetSite';
  794. function IUnknown_GetSite( punk:IUnknown; riid:REFIID; ppv:Ppointer):HRESULT;stdcall;external SHLWAPIDLL name 'IUnknown_GetSite';
  795. function IUnknown_QueryService(punk:IUnknown; constref guidService:TGUID; riid:REFIID; ppvOut:Ppointer):HRESULT;stdcall;external SHLWAPIDLL name 'IUnknown_QueryService';
  796. { _COM_Outptr_ }
  797. function IStream_Read(out pstm:IStream; pv:pointer; cb:ULONG):HRESULT;stdcall;external SHLWAPIDLL name 'IStream_Read';
  798. (* Const before type ignored *)
  799. function IStream_Write(out pstm:IStream; pv:pointer; cb:ULONG):HRESULT;stdcall;external SHLWAPIDLL name 'IStream_Write';
  800. function IStream_Reset(out pstm:IStream):HRESULT;stdcall;external SHLWAPIDLL name 'IStream_Reset';
  801. function IStream_Size(pstm:IStream; pui:PULARGE_INTEGER):HRESULT;stdcall;external SHLWAPIDLL name 'IStream_Size';
  802. function ConnectToConnectionPoint( punk:IUnknown; riidEvent:REFIID; fConnect:BOOL; punkTarget:IUnknown; pdwCookie:PDWORD;
  803. out ppcpOut:IConnectionPoint):HRESULT;stdcall;external SHLWAPIDLL name 'ConnectToConnectionPoint';
  804. function IStream_ReadPidl(pstm:IStream; ppidlOut:PPIDLIST_RELATIVE):HRESULT;stdcall;external SHLWAPIDLL name 'IStream_ReadPidl';
  805. function IStream_WritePidl(pstm:IStream; pidlWrite:PCUIDLIST_RELATIVE):HRESULT;stdcall;external SHLWAPIDLL name 'IStream_WritePidl';
  806. function IStream_ReadStr(pstm:IStream; ppsz:PLPWSTR):HRESULT;stdcall;external SHLWAPIDLL name 'IStream_ReadStr';
  807. function IStream_WriteStr(pstm:IStream; psz:PCWSTR):HRESULT;stdcall;external SHLWAPIDLL name 'IStream_WriteStr';
  808. function IStream_Copy(pstmFrom:IStream; pstmTo:IStream; cb:DWORD):HRESULT;stdcall;external SHLWAPIDLL name 'IStream_Copy';
  809. function SHGetViewStatePropertyBag(pidl:PCIDLIST_ABSOLUTE; pszBagName:PCWSTR; dwFlags:DWORD; riid:REFIID; ppv:Ppointer):HRESULT;stdcall;external SHLWAPIDLL name 'SHGetViewStatePropertyBag';
  810. (* Const before type ignored *)
  811. function SHFormatDateTimeA(pft:PFILETIME; pdwFlags:PDWORD; pszBuf:LPSTR; cchBuf:UINT):longint;stdcall;external SHLWAPIDLL name 'SHFormatDateTimeA';
  812. (* Const before type ignored *)
  813. function SHFormatDateTimeW(pft:PFILETIME; pdwFlags:PDWORD; pszBuf:LPWSTR; cchBuf:UINT):longint;stdcall;external SHLWAPIDLL name 'SHFormatDateTimeW';
  814. { filetime unaligned }
  815. function SHAnsiToUnicode(pszSrc:PCSTR; pwszDst:PWSTR; cwchBuf:longint):longint;stdcall;external SHLWAPIDLL name 'SHAnsiToUnicode';
  816. function SHAnsiToAnsi(pszSrc:PCSTR; pszDst:PSTR; cchBuf:longint):longint;stdcall;external SHLWAPIDLL name 'SHAnsiToAnsi';
  817. function SHUnicodeToAnsi(pwszSrc:PCWSTR; pszDst:PSTR; cchBuf:longint):longint;stdcall;external SHLWAPIDLL name 'SHUnicodeToAnsi';
  818. function SHUnicodeToUnicode(pwzSrc:PCWSTR; pwzDst:PWSTR; cwchBuf:longint):longint;stdcall;external SHLWAPIDLL name 'SHUnicodeToUnicode';
  819. function SHMessageBoxCheckA(hwnd:HWND; pszText:LPCSTR; pszCaption:LPCSTR; uType:UINT; iDefault:longint;
  820. pszRegVal:LPCSTR):longint;stdcall;external SHLWAPIDLL name 'SHMessageBoxCheckA';
  821. function SHMessageBoxCheckW(hwnd:HWND; pszText:LPCWSTR; pszCaption:LPCWSTR; uType:UINT; iDefault:longint;
  822. pszRegVal:LPCWSTR):longint;stdcall;external SHLWAPIDLL name 'SHMessageBoxCheckW';
  823. function SHSendMessageBroadcastA(uMsg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;stdcall;external SHLWAPIDLL name 'SHSendMessageBroadcastA';
  824. function SHSendMessageBroadcastW(uMsg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;stdcall;external SHLWAPIDLL name 'SHSendMessageBroadcastW';
  825. function SHStripMneumonicA(pszMenu:LPSTR):CHAR;stdcall;external SHLWAPIDLL name 'SHStripMneumonicA';
  826. function SHStripMneumonicW(pszMenu:LPWSTR):WCHAR;stdcall;external SHLWAPIDLL name 'SHStripMneumonicW';
  827. function IsOS(dwOS:DWORD):BOOL;stdcall;external SHLWAPIDLL name 'IsOS';
  828. (* Const before type ignored *)
  829. function SHGlobalCounterGetValue(id:SHGLOBALCOUNTER):longint;stdcall;external SHLWAPIDLL name 'SHGlobalCounterGetValue';
  830. (* Const before type ignored *)
  831. function SHGlobalCounterIncrement(id:SHGLOBALCOUNTER):longint;stdcall;external SHLWAPIDLL name 'SHGlobalCounterIncrement';
  832. (* Const before type ignored *)
  833. function SHGlobalCounterDecrement(id:SHGLOBALCOUNTER):longint;stdcall;external SHLWAPIDLL name 'SHGlobalCounterDecrement';
  834. (* Const before type ignored *)
  835. function SHAllocShared(pvData:pointer; dwSize:DWORD; dwProcessId:DWORD):HANDLE;stdcall;external SHLWAPIDLL name 'SHAllocShared';
  836. function SHFreeShared(hData:HANDLE; dwProcessId:DWORD):BOOL;stdcall;external SHLWAPIDLL name 'SHFreeShared';
  837. function SHLockShared(hData:HANDLE; dwProcessId:DWORD):pointer;stdcall;external SHLWAPIDLL name 'SHLockShared';
  838. function SHUnlockShared(pvData:pointer):BOOL;stdcall;external SHLWAPIDLL name 'SHUnlockShared';
  839. function WhichPlatform:UINT;stdcall;external SHLWAPIDLL name 'WhichPlatform';
  840. function SHIsLowMemoryMachine(dwType:DWORD):BOOL;stdcall;external SHLWAPIDLL name 'SHIsLowMemoryMachine';
  841. function GetMenuPosFromID(hmenu:HMENU; id:UINT):longint;stdcall;external SHLWAPIDLL name 'GetMenuPosFromID';
  842. function SHGetInverseCMAP(pbMap:PBYTE; cbMap:ULONG):HRESULT;stdcall;external SHLWAPIDLL name 'SHGetInverseCMAP';
  843. function SHAutoComplete(hwndEdit:HWND; dwFlags:DWORD):HRESULT;stdcall;external SHLWAPIDLL name 'SHAutoComplete';
  844. function SHCreateThreadRef(pcRef:PLONG; out ppunk:IUnknown):HRESULT;stdcall;external SHLWAPIDLL name 'SHCreateThreadRef';
  845. function SHSetThreadRef(punk:IUnknown):HRESULT;stdcall;external SHLWAPIDLL name 'SHSetThreadRef';
  846. function SHGetThreadRef(out ppunk:IUnknown):HRESULT;stdcall;external SHLWAPIDLL name 'SHGetThreadRef';
  847. { _COM_Outptr_ }
  848. (* Const before type ignored *)
  849. function SHSkipJunction(pbc:IBindCtx; pclsid:PCLSID):BOOL;stdcall;external SHLWAPIDLL name 'SHSkipJunction';
  850. function SHCreateThread(pfnThreadProc:LPTHREAD_START_ROUTINE; pData:pointer; flags:SHCT_FLAGS; pfnCallback:LPTHREAD_START_ROUTINE):BOOL;stdcall;external SHLWAPIDLL name 'SHCreateThread';
  851. function SHCreateThreadWithHandle(pfnThreadProc:LPTHREAD_START_ROUTINE; pData:pointer; flags:SHCT_FLAGS; pfnCallback:LPTHREAD_START_ROUTINE; pHandle:PHANDLE):BOOL;stdcall;external SHLWAPIDLL name 'SHCreateThreadWithHandle';
  852. procedure SetProcessReference( punk:IUnknown);stdcall;external SHLWAPIDLL name 'SetProcessReference';
  853. function GetProcessReference(punk:IUnknown):HRESULT;stdcall;external SHLWAPIDLL name 'GetProcessReference';
  854. {_COM_Outptr_ }
  855. function SHReleaseThreadRef:HRESULT;stdcall;external SHLWAPIDLL name 'SHReleaseThreadRef';
  856. { release a CTF_THREAD_REF reference earlier than the return of pfnThreadProc }
  857. function SHCreateShellPalette(hdc:HDC):HPALETTE;stdcall;external SHLWAPIDLL name 'SHCreateShellPalette';
  858. procedure ColorRGBToHLS(clrRGB:COLORREF; pwHue:PWORD; pwLuminance:PWORD; pwSaturation:PWORD);stdcall;external SHLWAPIDLL name 'ColorRGBToHLS';
  859. function ColorHLSToRGB(wHue:WORD; wLuminance:WORD; wSaturation:WORD):COLORREF;stdcall;external SHLWAPIDLL name 'ColorHLSToRGB';
  860. function ColorAdjustLuma(clrRGB:COLORREF; n:longint; fScale:BOOL):COLORREF;stdcall;external SHLWAPIDLL name 'ColorAdjustLuma';
  861. function IsInternetESCEnabled:BOOL;stdcall;external SHLWAPIDLL name 'IsInternetESCEnabled';
  862. implementation
  863. end.