Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

726 lines
29 KiB

  1. //+-------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. // Copyright (c) Microsoft Corporation. All rights reserved.
  5. //
  6. //--------------------------------------------------------------------------
  7. import "objidl.idl";
  8. import "shtypes.idl";
  9. import "shobjidl.idl";
  10. import "unknwn.idl";
  11. import "wtypes.idl";
  12. import "prsht.idl";
  13. import "msxml.idl";
  14. ///////////////////////////////////////////////////////////////////////////////
  15. //
  16. [
  17. uuid(fe787bcb-0ee8-44fb-8c89-12f508913c40),
  18. helpstring("MRU using a binary data key"),
  19. local
  20. ]
  21. interface IMruDataList : IUnknown
  22. {
  23. typedef int (stdcall *MRUDATALISTCOMPARE)(const BYTE *, const BYTE *, int);
  24. enum
  25. {
  26. MRULISTF_USE_MEMCMP = 0x0000, // default, find uses memcmp()
  27. MRULISTF_USE_STRCMPIW = 0x0001, // find uses StrCmpIW()
  28. MRULISTF_USE_STRCMPW = 0x0002, // find uses StrCmpW()
  29. MRULISTF_USE_ILISEQUAL = 0x0003, // find uses ILIsEqual()
  30. };
  31. typedef DWORD MRULISTF;
  32. HRESULT InitData(
  33. [in] UINT uMax,
  34. [in] MRULISTF flags,
  35. [in] HKEY hKey,
  36. [in, string] LPCWSTR pszSubKey,
  37. [in] MRUDATALISTCOMPARE pfnCompare);
  38. HRESULT AddData(
  39. [in, size_is(cbData)] const BYTE *pData,
  40. [in] DWORD cbData,
  41. [out] DWORD *pdwSlot);
  42. HRESULT FindData(
  43. [in, size_is(cbData)] const BYTE *pData,
  44. [in] DWORD cbData,
  45. [out] int *piIndex);
  46. HRESULT GetData(
  47. [in] int iIndex,
  48. [out, size_is(cbData)] BYTE *pData,
  49. [in] DWORD cbData);
  50. HRESULT QueryInfo(
  51. [in] int iIndex,
  52. [in, out] DWORD *pdwSlot,
  53. [in, out] DWORD *pcbData);
  54. HRESULT Delete([in] int iIndex);
  55. };
  56. [
  57. uuid(47851649-a2ef-4e67-baec-c6a153ac72ec),
  58. helpstring("MRU using a LPITEMIDLIST key"),
  59. local,
  60. ]
  61. interface IMruPidlList : IUnknown
  62. {
  63. HRESULT InitList(
  64. [in] UINT uMax,
  65. [in] HKEY hKey,
  66. [in, string] LPCWSTR pszSubKey);
  67. HRESULT UsePidl(
  68. [in] LPCITEMIDLIST pidl,
  69. [out] DWORD *pdwSlot);
  70. // QueryPidl returns S_OK if rgdwSlots[0] is the pidl queried for
  71. // or S_FALSE if it is one of the parents
  72. // or failure if nothing was inserted in rgdwSlots
  73. HRESULT QueryPidl(
  74. [in] LPCITEMIDLIST pidl,
  75. [in] DWORD cSlots,
  76. [out, size_is(cSlots), length_is(*pcSlotsFetched)] DWORD *rgdwSlots,
  77. [out] DWORD *pcSlotsFetched);
  78. HRESULT PruneKids([in] LPCITEMIDLIST pidl);
  79. };
  80. // INSCTree Behavior flags: (INSCTree::Initialize(..., dwFlags))
  81. cpp_quote("#define NSS_DROPTARGET 0x0001 // register as a drop target")
  82. cpp_quote("#define NSS_BROWSERSELECT 0x0002 // Use the browser style selection (see above)")
  83. cpp_quote("#define NSS_NOHISTSELECT 0x0004 // Do not select the history entry on navigations.")
  84. cpp_quote("#define NSS_MULTISELECT 0x0008")
  85. cpp_quote("#define NSS_BORDER 0x0010")
  86. cpp_quote("#define NSS_NORMALTREEVIEW 0x0020")
  87. cpp_quote("#define NSS_HEADER 0x0040")
  88. // NSCTree Modes: (INSCTree::SetNscMode(nMode))
  89. typedef enum
  90. {
  91. MODE_NORMAL = 0x0000, // Act like a normal tree view
  92. MODE_CONTROL = 0x0001, // Have behaviors specific the being hosted in a control
  93. MODE_HISTORY = 0x0002, // Have behaviors specific to the History pane.
  94. MODE_FAVORITES = 0x0004, // Have behaviors specific to the Favorites pane.
  95. MODE_CUSTOM = 0x0008, // custom behavior defined by flags passed to initialize
  96. } nscTreeMode;
  97. [
  98. uuid(43A8F463-4222-11d2-B641-006097DF5BD4),
  99. helpstring("Private Namespace tree control interface"),
  100. local
  101. ]
  102. interface INSCTree : IUnknown
  103. {
  104. // CreateTree() dwStyles - these are normal window styles.
  105. HRESULT CreateTree([in] HWND hwndParent, [in] DWORD dwStyles, [out] HWND *phwnd);
  106. // Initialize() grfFlags - these are SHCONTF_* flags defined in <shlobj.h>.
  107. // dwFlags - these are NSCTree Behavior flags defined below
  108. // NSS_DROPTARGET - Enable drag and drop
  109. // NSS_BROWSERSELECT - With this on, a selection is different than the standard
  110. // tree view selection in that a box is drawn around the sub heirarchy selected
  111. // and the buttons are turned off.
  112. HRESULT Initialize([in] LPCITEMIDLIST pidlRoot, [in] DWORD grfFlags, [in] DWORD dwFlags);
  113. HRESULT ShowWindow([in] BOOL fShow);
  114. HRESULT Refresh();
  115. HRESULT GetSelectedItem([out] LPITEMIDLIST * ppidl, [in] int nItem);
  116. HRESULT SetSelectedItem([in] LPCITEMIDLIST pidl, [in] BOOL fCreate, [in] BOOL fReinsert, [in] int nItem);
  117. // SetNscMode() nMode - these are modes that inherit general behavior. Defined below
  118. HRESULT GetNscMode([out] UINT * pnMode);
  119. HRESULT SetNscMode([in] UINT nMode);
  120. HRESULT GetSelectedItemName([in, out] LPWSTR pszName, [in] DWORD cchName);
  121. HRESULT BindToSelectedItemParent([in] REFIID riid, [out] void **ppv, [out] LPITEMIDLIST *ppidl);
  122. BOOL InLabelEdit();
  123. };
  124. [
  125. uuid(801C1AD5-C47C-428c-97AF-E991E4857D97),
  126. local
  127. ]
  128. interface INSCTree2 : INSCTree
  129. {
  130. HRESULT RightPaneNavigationStarted([in] LPITEMIDLIST pidl);
  131. HRESULT RightPaneNavigationFinished([in] LPITEMIDLIST pidl);
  132. HRESULT CreateTree2([in] HWND hwndParent, [in] DWORD dwStyle, [in] DWORD dwExStyle, [out] HWND *phwnd);
  133. }
  134. [
  135. uuid(3a77ce00-6f74-4594-9399-c4578aa4a1b6),
  136. helpstring("used to notify browser of application start notifications"),
  137. ]
  138. interface INotifyAppStart : IUnknown
  139. {
  140. HRESULT AppStarting(void);
  141. HRESULT AppStarted(void);
  142. };
  143. [
  144. uuid(e787f2c0-3d21-4d98-85c8-a038195ba649),
  145. local
  146. ]
  147. interface IInitViewLinkedWebOC : IUnknown
  148. {
  149. HRESULT SetViewLinkedWebOC([in] BOOL bValue);
  150. HRESULT IsViewLinkedWebOC([out] BOOL* pbValue);
  151. HRESULT SetViewLinkedWebOCFrame([in] IDispatch * punk);
  152. HRESULT GetViewLinkedWebOCFrame([out] IDispatch ** punk);
  153. HRESULT SetFrameName([in] BSTR bstrFrameName);
  154. };
  155. [
  156. helpstring("Interface to handle nsc specifics for different bands"),
  157. uuid(CF1609EC-FA4B-4818-AB01-55643367E66D),
  158. object,
  159. local
  160. ]
  161. interface INamespaceProxy : IUnknown
  162. {
  163. HRESULT GetNavigateTarget(LPCITEMIDLIST pidl, LPITEMIDLIST * ppidlTarget, ULONG * pulAttrib);
  164. HRESULT Invoke(LPCITEMIDLIST pidl);
  165. HRESULT OnSelectionChanged(LPCITEMIDLIST pidl);
  166. HRESULT RefreshFlags(DWORD *pdwStyle, DWORD *pdwExStyle, DWORD *dwEnum);
  167. HRESULT CacheItem(LPCITEMIDLIST pidl);
  168. }
  169. //-----------------------------------------
  170. // Search Companion Info object
  171. //-----------------------------------------
  172. [
  173. uuid(DB5CEF35-BEC6-4762-A1BD-253F5BF67C72),
  174. helpstring("ISearchCompanionInfo Interface"),
  175. pointer_default(unique)
  176. ]
  177. interface ISearchCompanionInfo : IUnknown
  178. {
  179. HRESULT IsSearchCompanionInetAvailable([out] BOOL* pfAvailable);
  180. };
  181. // SMC_* Messages
  182. //
  183. // Private shell menu callback messages. The public messages are in shobjidl.idl
  184. //
  185. cpp_quote("#define SMC_EXEC 0x00000004 // The callback is called to execute an item")
  186. cpp_quote("#define SMC_SELECTITEM 0x0000000B // The callback is called when an item is selected")
  187. cpp_quote("#define SMC_GETSFINFOTIP 0x0000000C // The callback is called to get some object")
  188. cpp_quote("#define SMC_GETINFOTIP 0x0000000D // The callback is called to get some object")
  189. cpp_quote("#define SMC_INSERTINDEX 0x0000000E // New item insert index")
  190. cpp_quote("#define SMC_POPUP 0x0000000F // InitMenu/InitMenuPopup (sort of)")
  191. cpp_quote("#define SMC_BEGINENUM 0x00000013 // tell callback that we are beginning to ENUM the indicated parent")
  192. cpp_quote("#define SMC_ENDENUM 0x00000014 // tell callback that we are ending the ENUM of the indicated paren")
  193. cpp_quote("#define SMC_MAPACCELERATOR 0x00000015 // Called when processing an accelerator.")
  194. cpp_quote("#define SMC_GETMINPROMOTED 0x00000018 // Returns the minimum number of promoted items")
  195. cpp_quote("#define SMC_DESTROY 0x0000002B // Called when a pane is being destroyed.")
  196. cpp_quote("#define SMC_SETOBJECT 0x0000002C // Called to save the passed object")
  197. cpp_quote("#define SMC_GETIMAGELISTS 0x00000031 // Called to get the small & large icon image lists, otherwise it will default to shell image list")
  198. cpp_quote("#define SMC_CUSTOMDRAW 0x00000032 // Requires SMINIT_CUSTOMDRAW")
  199. cpp_quote("#define SMC_BEGINDRAG 0x00000033 // Called to get preferred drop effect. wParam = &pdwEffect")
  200. cpp_quote("#define SMC_MOUSEFILTER 0x00000034 // Called to allow host to filter mouse messages. wParam=bRemove, lParam=pmsg")
  201. cpp_quote("#define SMC_DUMPONUPDATE 0x00000035 // S_OK if host wants old trash-everything-on-update behavior (recent docs)")
  202. cpp_quote("")
  203. cpp_quote("#define SMC_FILTERPIDL 0x10000000 // The callback is called to see if an item is visible")
  204. cpp_quote("#define SMC_CALLBACKMASK 0xF0000000 // Mask of comutationally intense messages")
  205. //-------------------------------------------------------------------------
  206. //
  207. // IShellMenu interface private defines. The interface and public defines are in shobjidl.idl
  208. //
  209. //-------------------------------------------------------------------------
  210. cpp_quote("#define SMINIT_RESTRICT_CONTEXTMENU 0x00000001 // Don't allow Context Menus")
  211. cpp_quote("#define SMINIT_DEFAULTTOTRACKPOPUP 0x00000008 // When no callback is specified, ")
  212. // default all HMENU items to Trackpopup
  213. cpp_quote("#define SMINIT_USEMESSAGEFILTER 0x00000020")
  214. cpp_quote("#define SMINIT_LEGACYMENU 0x00000040 // Old Menu behaviour.")
  215. cpp_quote("#define SMINIT_CUSTOMDRAW 0x00000080 // Send SMC_CUSTOMDRAW")
  216. // Internal Menuband setting
  217. cpp_quote("#define SMINIT_NOSETSITE 0x00010000 // Internal setting")
  218. // These are mutually Exclusive
  219. cpp_quote("#define SMINIT_MULTICOLUMN 0x40000000 // this is a multi column menu")
  220. // and should not destroy it.
  221. cpp_quote("#define SMSET_MERGE 0x00000002")
  222. cpp_quote("#define SMSET_NOEMPTY 0x00000004 // Dont show (Empty) on shell folder")
  223. cpp_quote("#define SMSET_USEBKICONEXTRACTION 0x00000008 // Use the background icon extractor")
  224. cpp_quote("#define SMSET_HASEXPANDABLEFOLDERS 0x00000010 // Need to call SHIsExpandableFolder")
  225. cpp_quote("#define SMSET_DONTREGISTERCHANGENOTIFY 0x00000020 // ShellFolder is a discontiguous child of a parent shell folder")
  226. cpp_quote("#define SMSET_COLLAPSEONEMPTY 0x00000040 // When Empty, causes a menus to collapse")
  227. cpp_quote("#define SMSET_USEPAGER 0x00000080 //Enable pagers in static menus")
  228. cpp_quote("#define SMSET_NOPREFIX 0x00000100 //Enable ampersand in static menus")
  229. cpp_quote("#define SMSET_SEPARATEMERGEFOLDER 0x00000200 //Insert separator when MergedFolder host changes")
  230. cpp_quote("#define SMINV_ICON 0x00000002")
  231. cpp_quote("#define SMINV_POSITION 0x00000004")
  232. cpp_quote("#define SMINV_NEXTSHOW 0x00000010 // Does Invalidates on next show.")
  233. cpp_quote("#define SMINV_PROMOTE 0x00000020 // Does Invalidates on next show.")
  234. cpp_quote("#define SMINV_DEMOTE 0x00000040 // Does Invalidates on next show.")
  235. cpp_quote("#define SMINV_FORCE 0x00000080")
  236. cpp_quote("#define SMINV_NOCALLBACK 0x00000100 // Invalidates, but does not call the callback.")
  237. cpp_quote("#define SMINV_INITMENU 0x00000200 // Call callback's SMC_INITMENU as part of invalidate (Whistler)")
  238. // New for Whistler - used by Start Pane to get the Programs submenu
  239. [
  240. uuid(6f51c646-0efe-4370-882a-c1f61cb27c3b),
  241. object,
  242. pointer_default(unique),
  243. local
  244. ]
  245. interface IShellMenu2 : IShellMenu
  246. {
  247. // Retrieves an interface on a submenu.
  248. HRESULT GetSubMenu(UINT idCmd, [in] REFIID riid, [out, iid_is(riid)] void **ppvObj);
  249. HRESULT SetToolbar([in] HWND hwnd, [in] DWORD dwFlags);
  250. HRESULT SetMinWidth([in] int cxMenu);
  251. HRESULT SetNoBorder([in] BOOL fNoBorder);
  252. HRESULT SetTheme([in, string] LPCWSTR pszTheme);
  253. };
  254. [
  255. uuid(8278F932-2A3E-11d2-838F-00C04FD918D0),
  256. object,
  257. pointer_default(unique),
  258. local
  259. ]
  260. interface ITrackShellMenu : IShellMenu
  261. {
  262. HRESULT SetObscured([in] HWND hwndTB, [in] IUnknown* punkBand, DWORD dwSMSetFlags);
  263. HRESULT Popup([in] HWND hwnd, [in] POINTL *ppt, [in] RECTL *prcExclude, DWORD dwFlags);
  264. };
  265. [
  266. uuid(6d45a930-f71a-11d0-9ea7-00805f714772),
  267. helpstring("thumbnail extractor helper object"),
  268. local
  269. ]
  270. interface IThumbnail : IUnknown
  271. {
  272. // ::Init(HWND hwnd, UINT uMsg)
  273. // Must initialize interface before use. The hwnd given will receive the
  274. // uMsg message when the bitmap is computed (cf. GetBitmap()).
  275. //
  276. // ::GetBitmap(LPCWSTR pwszFile, DWORD dwItem, LONG lWidth, LONG lHeight)
  277. // Call this function to actually compute and return the bitmap. pszFile is
  278. // the parsing name (filename) whose bitmap is to be computed. lWidth and lHeight are the
  279. // width and height respectively of the rectangle containing the thumbnail,
  280. // i.e. the size of the resultant bitmap. When the bitmap is computed, the
  281. // uMsg is sent to the hwnd (cf. Init()) where LPARAM is the HBITMAP, and
  282. // WPARAM is dwItem (so it's an ID to identify the bitmap).
  283. // NOTE: Call GetBitmap(NULL,...) to cancel any pending requests.
  284. HRESULT Init(HWND hwnd, UINT uMsg);
  285. HRESULT GetBitmap(LPCWSTR pszFile, DWORD dwItem, LONG lWidth, LONG lHeight);
  286. };
  287. [
  288. uuid(500202A0-731E-11d0-B829-00C04FD706EC),
  289. helpstring("thumbnail extractor helper object, supports pidl"),
  290. local
  291. ]
  292. interface IThumbnail2 : IThumbnail
  293. {
  294. HRESULT GetBitmapFromIDList(LPCITEMIDLIST pidl, DWORD dwItem, LONG lWidth, LONG lHeight);
  295. }
  296. [
  297. helpstring("interface to initialize MRU in auto complete"),
  298. uuid(F729FC5E-8769-4f3e-BDB2-D7B50FD2275B),
  299. object,
  300. local
  301. ]
  302. interface IACLCustomMRU : IUnknown
  303. {
  304. HRESULT Initialize([in, string] LPCWSTR pwszMRURegKey, [in] DWORD dwMax);
  305. HRESULT AddMRUString([in, string] LPCWSTR pwszEntry);
  306. }
  307. cpp_quote("#if _WIN32_IE >= 0x0600")
  308. cpp_quote("// used in both shell32 and browseui")
  309. [
  310. helpstring("IShellBrowserService"),
  311. uuid(1307ee17-ea83-49eb-96b2-3a28e2d7048a), // IID_IShellBrowserService
  312. object,
  313. pointer_default(unique)
  314. ]
  315. interface IShellBrowserService : IUnknown
  316. {
  317. HRESULT GetPropertyBag([in] DWORD dwFlags, [in] REFIID riid, [out, iid_is(riid)] void** ppv);
  318. };
  319. cpp_quote("#endif // _WIN32_IE >= 0x0600")
  320. [
  321. object,
  322. uuid(5747C63F-1DE8-423f-980F-00CB07F4C45B),
  323. pointer_default(unique),
  324. local
  325. ]
  326. interface IObjectWithRegistryKey : IUnknown
  327. {
  328. HRESULT SetKey([in] HKEY hk);
  329. HRESULT GetKey([out] HKEY *phk);
  330. }
  331. //
  332. // 0--| IQuerySource - direct wrapper for single HKEY
  333. //
  334. // IQuerySource is an abstract representation of the
  335. // methods typically used to directly access a registry HKEY.
  336. // This allows querying against existing keys, while not
  337. // binding objects implemented with IQuerySource to always
  338. // use HKEYs for all sources. IQS implementations that do
  339. // wrap an HKEY should also expose IObjectWithRegistryKey.
  340. //
  341. [
  342. object,
  343. uuid(c7478486-7583-49e7-a6c2-faf8f02bc30e),
  344. pointer_default(unique)
  345. ]
  346. interface IQuerySource : IUnknown
  347. {
  348. HRESULT EnumValues([out] IEnumString **ppenum);
  349. HRESULT EnumSources([out] IEnumString **ppenum);
  350. HRESULT QueryValueString(
  351. [in, string] LPCWSTR pszSubSource,
  352. [in, string] LPCWSTR pszValue,
  353. [out, string] LPWSTR *ppsz);
  354. HRESULT QueryValueDword(
  355. [in, string] LPCWSTR pszSubSource,
  356. [in, string] LPCWSTR pszValue,
  357. [out] DWORD *pdw);
  358. HRESULT QueryValueExists(
  359. [in, string] LPCWSTR pszSubSource,
  360. [in, string] LPCWSTR pszValue);
  361. // used for Query/SetValueDirect
  362. // in QueryValueDirect pblob->fFlags = qvt
  363. [v1_enum] enum
  364. {
  365. QVT_EMPTY = 0, // REG_NONE
  366. QVT_STRING = 1, // REG_SZ
  367. QVT_EXPANDABLE_STRING = 2, // REG_EXPAND_SZ
  368. QVT_BINARY = 3, // REG_BINARY
  369. QVT_DWORD = 4, // REG_DWORD
  370. QVT_MULTI_STRING = 7, // REG_MULTI_SZ
  371. };
  372. HRESULT QueryValueDirect(
  373. [in, string] LPCWSTR pszSubSource,
  374. [in, string] LPCWSTR pszValue,
  375. [out] FLAGGED_BYTE_BLOB **ppblob);
  376. HRESULT OpenSource(
  377. [in] LPCWSTR pszSubSource,
  378. [in] BOOL fCreate,
  379. [out] IQuerySource **ppqs);
  380. HRESULT SetValueDirect(
  381. [in, string] LPCWSTR pszSubSource,
  382. [in, string] LPCWSTR pszValue,
  383. [in] ULONG qvt,
  384. [in] DWORD cbData,
  385. [in, size_is(cbData)] BYTE *pbData);
  386. };
  387. [
  388. object,
  389. uuid(b3dcb623-4280-4eb1-84b3-8d07e84f299a),
  390. pointer_default(unique)
  391. ]
  392. interface IObjectWithQuerySource : IUnknown
  393. {
  394. HRESULT SetSource([in] IQuerySource *pqs);
  395. HRESULT GetSource([in] REFIID riid, [out, iid_is(riid)] void **ppv);
  396. };
  397. [
  398. object,
  399. uuid(3c44ba76-de0e-4049-b6e4-6b31a5262707),
  400. pointer_default(unique)
  401. ]
  402. interface IPersistString2 : IPersist
  403. {
  404. HRESULT SetString([in, string] LPCWSTR psz);
  405. HRESULT GetString([out, string] LPWSTR *ppsz);
  406. };
  407. typedef [v1_enum] enum tagASSOCQUERY
  408. {
  409. // each ASSOCQUERY identifier is composed of
  410. // HIWORD: the type and capabilities (AQF bits)
  411. // LOWORD: the ordinal relative to its type
  412. AQ_NOTHING = 0,
  413. // simple queries where pszCue is unused (AQF type 0x000)
  414. AQS_FRIENDLYTYPENAME = 0x00170000, // friendly name of the document type
  415. AQS_DEFAULTICON = 0x00070001, // Default icon resource string call PathParseIconLocation() to use
  416. AQS_CONTENTTYPE = 0x80070002, // MIME Content type
  417. AQS_CLSID = 0x00070003, // CLSID associated with class
  418. AQS_PROGID = 0x00070004, // ProgID associated with class
  419. // simple queries where pszCue identifies the value (AQF type 0x010)
  420. AQN_NAMED_VALUE = 0x010f0000, // querys directly for value named by pszCue
  421. AQNS_NAMED_MUI_STRING = 0x01170001, // as ASSOCQUERY_NAMED_VALUE and loads it using MUI semantics SHLoadIndirectString()
  422. AQNS_SHELLEX_HANDLER = 0x81070002, // ..\Shellex\%pszCue% returns a CLSID string for the value.
  423. // queries that require delegation to the static verb element for completion, pszCue is the verb (AQF type 0x020)
  424. AQVS_COMMAND = 0x02070000, // ...\shell\verb\command, template for CreateProcess()
  425. AQVS_DDECOMMAND = 0x02070001, // ...\shell\verb\ddeexec, template for DDE conversation
  426. AQVS_DDEIFEXEC = 0x02070002, // ...\shell\verb\ddeexec\ifexec, replaces DDECOMMAND after calling CreateProcess(AQVS_COMMAND)
  427. AQVS_DDEAPPLICATION = 0x02070003, // ...\shell\verb\ddeexec\application, Application name in DDE broadcast
  428. AQVS_DDETOPIC = 0x02070004, // ...\shell\verb\ddeexec\topic, Topic Name in DDE broadcast
  429. AQV_NOACTIVATEHANDLER = 0x02060005, // ...\shell\verb\ddeexec!NoActivateHandler restrict attempts to activate window
  430. AQVD_MSIDESCRIPTOR = 0x02060006, // Component Descriptor to pass to MSI APIs
  431. AQVS_APPLICATION_PATH = 0x02010007, // path to executable
  432. AQVS_APPLICATION_FRIENDLYNAME = 0x02170008, // friendly name of associated application
  433. // delegate objects retrievable through QueryObject (AQF type 0x022)
  434. AQVO_SHELLVERB_DELEGATE = 0x02200000, // CAssocShellVerbElement init'd with ...\shell\verb
  435. AQVO_APPLICATION_DELEGATE = 0x02200001, // CAssocApplicationElement init'd with AQVS_APPLICATION_PATH
  436. // flags that hint to the implementation the purpose of the ASSOCQUERY
  437. AQF_STRING = 0x00010000, // supports QueryString()
  438. AQF_EXISTS = 0x00020000, // supports QueryExists()
  439. AQF_DIRECT = 0x00040000, // supports QueryDirect()
  440. AQF_DWORD = 0x00080000, // supports QueryDword()
  441. AQF_MUISTRING = 0x00100000, // supports QueryString(), but also does a SHLoadIndirectString()
  442. AQF_OBJECT = 0x00200000, // supports QueryObject()
  443. AQF_CUEIS_UNUSED = 0x00000000, // pszCue is unused, in IAssociation* Query methods
  444. AQF_CUEIS_NAME = 0x01000000, // pszCue is the name of the value being queried for, in IAssociation* Query methods
  445. AQF_CUEIS_SHELLVERB = 0x02000000, // pszCue is the Shell\Verb, in IAssociation* Query methods
  446. AQF_QUERY_INITCLASS = 0x80000000, // for values that hang off the extension, etc.
  447. } ASSOCQUERY;
  448. //
  449. // 0--| IAssociationElement - indirect wrapper for HKEY and subkeys/values
  450. //
  451. // IAssociationElement wraps the logic used to access values
  452. // under an HKEY. The methods are essentially identical, just changing
  453. // for the return type.
  454. // * ASSOCQUERY - enum names the query for the association. the
  455. // query's bits define what methods and return values are valid.
  456. // NOTE - Not all ASSOCQUERY's are supported by all elements.
  457. // * pszCue - string that is used with some queries.
  458. // if (query & AQF_CUEIS_SHELLVERB) then pszCue is the static verb
  459. // if (query & AQF_CUEIS_NAME) then pszCue is name for the value or subkey
  460. //
  461. [
  462. object,
  463. uuid(e58b1abf-9596-4dba-8997-89dcdef46992),
  464. pointer_default(unique)
  465. ]
  466. interface IAssociationElement : IUnknown
  467. {
  468. HRESULT QueryString(
  469. [in] ASSOCQUERY query,
  470. [in, string] LPCWSTR pszCue,
  471. [out, string] LPWSTR *ppsz);
  472. HRESULT QueryDword(
  473. [in] ASSOCQUERY query,
  474. [in, string] LPCWSTR pszCue,
  475. [out] DWORD *pdw);
  476. HRESULT QueryExists(
  477. [in] ASSOCQUERY query,
  478. [in, string] LPCWSTR pszCue);
  479. HRESULT QueryDirect(
  480. [in] ASSOCQUERY query,
  481. [in, string] LPCWSTR pszCue,
  482. [out] FLAGGED_BYTE_BLOB **ppblob);
  483. HRESULT QueryObject(
  484. [in] ASSOCQUERY query,
  485. [in, string] LPCWSTR pszCue,
  486. [in] REFIID riid,
  487. [out, iid_is(riid)] void **ppv);
  488. };
  489. [
  490. object,
  491. uuid(a6b0fb57-7523-4439-9425-ebe99823b828),
  492. pointer_default(unique)
  493. ]
  494. interface IEnumAssociationElements : IUnknown
  495. {
  496. HRESULT Next(
  497. [in] ULONG celt,
  498. [out, size_is(celt), length_is(*pceltFetched)] IAssociationElement ** rgelt,
  499. [out] ULONG *pceltFetched);
  500. HRESULT Skip([in] ULONG celt);
  501. HRESULT Reset();
  502. HRESULT Clone([out] IEnumAssociationElements **ppenum);
  503. };
  504. typedef DWORD ASSOCELEM_MASK;
  505. [
  506. object,
  507. uuid(ee9165bf-a4d9-474b-8236-6735cb7e28b6),
  508. pointer_default(unique)
  509. ]
  510. interface IAssociationArrayInitialize : IUnknown
  511. {
  512. HRESULT InitClassElements(
  513. [in] ASSOCELEM_MASK maskBase, // FOLDER || STAR
  514. [in] LPCWSTR pszClass);
  515. HRESULT InsertElements(
  516. [in] ASSOCELEM_MASK mask,
  517. [in] IEnumAssociationElements *peae);
  518. HRESULT FilterElements([in] ASSOCELEM_MASK maskInclude);
  519. };
  520. //
  521. // 0--| IAssociationArray - manages querying an array of IAssociationElement's
  522. // IAssociationArray wraps an array of objects implementing IAssociationElement.
  523. // It calls the elements in priority order, starting with the most specific
  524. // (ASSOCELEM_DATA) to the least specific (ASSOCELEM_EXTRA). IAssociationArray
  525. // combined with IAssociationArrayInitialize is a superset of IQueryAssociations.
  526. //
  527. // Which elements are in the array and how they are initialized depends on
  528. // how IAssociationArrayInitialize::InitClassElements() was called.
  529. // _________________________________
  530. // | CLSID_QueryAssociations |
  531. // 0--| IAssociationArrayInitialize |
  532. // 0--| IAssociationArray |
  533. // 0--| IQueryAssociations |
  534. // |_________________________________|
  535. // | | ________________________________
  536. // | | | CLSID_AssocShellElement |
  537. // | +--<0--|IPersistString2 - initializer |
  538. // +----<0--|IAssociationElement |
  539. // 0--|IObjectWithQuerySource |
  540. // |________________________________|
  541. // | ________________________
  542. // | | IQuerySource on HKEY |
  543. // +-<0--|IQuerySource |
  544. // 0--|IObjectWithRegistryKey |
  545. // |________________________|
  546. [
  547. object,
  548. uuid(3b877e3c-67de-4f9a-b29b-17d0a1521c6a),
  549. pointer_default(unique)
  550. ]
  551. interface IAssociationArray : IUnknown
  552. {
  553. HRESULT EnumElements(
  554. [in] ASSOCELEM_MASK mask,
  555. [out] IEnumAssociationElements **ppeae);
  556. HRESULT QueryString(
  557. [in] ASSOCELEM_MASK mask,
  558. [in] ASSOCQUERY query,
  559. [in, string] LPCWSTR pszCue,
  560. [out, string] LPWSTR *ppsz);
  561. HRESULT QueryDword(
  562. [in] ASSOCELEM_MASK mask,
  563. [in] ASSOCQUERY query,
  564. [in, string] LPCWSTR pszCue,
  565. [out] DWORD *pdw);
  566. HRESULT QueryExists(
  567. [in] ASSOCELEM_MASK mask,
  568. [in] ASSOCQUERY query,
  569. [in, string] LPCWSTR pszCue);
  570. HRESULT QueryDirect(
  571. [in] ASSOCELEM_MASK mask,
  572. [in] ASSOCQUERY query,
  573. [in, string] LPCWSTR pszCue,
  574. [out] FLAGGED_BYTE_BLOB **ppblob);
  575. HRESULT QueryObject(
  576. [in] ASSOCELEM_MASK mask,
  577. [in] ASSOCQUERY query,
  578. [in, string] LPCWSTR pszCue,
  579. [in] REFIID riid,
  580. [out, iid_is(riid)] void **ppv);
  581. };
  582. [
  583. uuid(C9D81948-443A-40C7-945C-5E171B8C66B4),
  584. object,
  585. pointer_default(unique)
  586. ]
  587. interface IAddressBarParser : IUnknown
  588. {
  589. HRESULT ParseFromOutsideSource([in, string] LPCWSTR pcszUrlIn, [in] DWORD dwParseFlags, [out] BOOL *pfWasCorrected, [in] BOOL * pfWasCanceled);
  590. HRESULT GetUrl([out, size_is(cchUrlOutSize) ] LPWSTR pszUrlOut, [in] DWORD cchUrlOutSize);
  591. HRESULT SetUrl([in, string] LPCWSTR pcszUrlIn, [in] DWORD dwGenType);
  592. HRESULT GetDisplayName([out, size_is(cchUrlOutSize)] LPWSTR pszUrlOut, [in] DWORD cchUrlOutSize);
  593. HRESULT GetPidl([out] LPITEMIDLIST * ppidl);
  594. HRESULT SetPidl([in] LPCITEMIDLIST pidl);
  595. HRESULT GetArgs([out, size_is(cchArgsOutSize)] LPWSTR pszArgsOut, [in]DWORD cchArgsOutSize);
  596. HRESULT AddPath([in] LPCITEMIDLIST pidl);
  597. };
  598. [
  599. uuid(aba1bbae-8280-4b0c-80a3-39095d68881f)
  600. ]
  601. library IEPrivateObjects
  602. {
  603. // CLSID_HWEventSettings
  604. // CLSID_MruPidlList
  605. [ uuid(42aedc87-2188-41fd-b9a3-0c966feabec1) ] coclass MruPidlList { interface IMruPidlList; }
  606. // CLSID_MruLongList
  607. [ uuid(53bd6b4e-3780-4693-afc3-7161c2f3ee9c) ] coclass MruLongList { interface IMruDataList; }
  608. // CLSID_MruLongList
  609. [ uuid(53bd6b4f-3780-4693-afc3-7161c2f3ee9c) ] coclass MruShortList { interface IMruDataList; }
  610. // CLSID_FolderMarshalStub
  611. [ uuid(bf50b68e-29b8-4386-ae9c-9734d5117cd5) ] coclass FolderMarshalStub { interface IPersist; }
  612. // CLSID_MailRecipient
  613. [ uuid(9E56BE60-C50F-11CF-9A2C-00A0C90A90CE) ] coclass MailRecipient { interface IDropTarget; };
  614. [ uuid(AC1B0D5D-DD59-4ff0-93F8-A84373821606) ] coclass SearchCompanionInfo { interface ISearchCompanionInfo; }
  615. // CLSID_TrackShellMenu
  616. [ uuid(8278F931-2A3E-11d2-838F-00C04FD918D0) ] coclass TrackShellMenu { interface ITrackShellMenu; }
  617. // CLSID_Thumbnail
  618. [ uuid(7487cd30-f71a-11d0-9ea7-00805f714772)] coclass Thumbnail { interface IThumbnail; }
  619. [ uuid(c461837f-ea59-494a-b7c6-cd040e37185e) ] coclass AssocShellElement { interface IAssociationElement; }
  620. [ uuid(9016d0dd-7c41-46cc-a664-bf22f7cb186a) ] coclass AssocProgidElement { interface IAssociationElement; }
  621. [ uuid(57aea081-5ee9-4c27-b218-c4b702964c54) ] coclass AssocClsidElement { interface IAssociationElement; }
  622. [ uuid(a6c4baad-4af5-4191-8685-c2c8953a148c) ] coclass AssocSystemElement { interface IAssociationElement; }
  623. [ uuid(0dc5fb21-b93d-4e3d-bb2f-ce4e36a70601) ] coclass AssocPerceivedElement { interface IAssociationElement; }
  624. [ uuid(0c2bf91b-8746-4fb1-b4d7-7c03f890b168) ] coclass AssocApplicationElement { interface IAssociationElement; }
  625. [ uuid(7566df7a-42cc-475d-a025-1205ddf4911f) ] coclass AssocFolderElement { interface IAssociationElement; }
  626. [ uuid(0633b720-6926-404c-b6b3-923b1a501743) ] coclass AssocStarElement { interface IAssociationElement; }
  627. [ uuid(3c81e7fa-1f3b-464a-a350-114a25beb2a2) ] coclass AssocClientElement { interface IAssociationElement; }
  628. }