//+------------------------------------------------------------------------- // // Microsoft Windows // Copyright (c) Microsoft Corporation. All rights reserved. // //-------------------------------------------------------------------------- import "objidl.idl"; import "shtypes.idl"; import "shobjidl.idl"; import "unknwn.idl"; import "wtypes.idl"; import "prsht.idl"; import "msxml.idl"; /////////////////////////////////////////////////////////////////////////////// // [ uuid(fe787bcb-0ee8-44fb-8c89-12f508913c40), helpstring("MRU using a binary data key"), local ] interface IMruDataList : IUnknown { typedef int (stdcall *MRUDATALISTCOMPARE)(const BYTE *, const BYTE *, int); enum { MRULISTF_USE_MEMCMP = 0x0000, // default, find uses memcmp() MRULISTF_USE_STRCMPIW = 0x0001, // find uses StrCmpIW() MRULISTF_USE_STRCMPW = 0x0002, // find uses StrCmpW() MRULISTF_USE_ILISEQUAL = 0x0003, // find uses ILIsEqual() }; typedef DWORD MRULISTF; HRESULT InitData( [in] UINT uMax, [in] MRULISTF flags, [in] HKEY hKey, [in, string] LPCWSTR pszSubKey, [in] MRUDATALISTCOMPARE pfnCompare); HRESULT AddData( [in, size_is(cbData)] const BYTE *pData, [in] DWORD cbData, [out] DWORD *pdwSlot); HRESULT FindData( [in, size_is(cbData)] const BYTE *pData, [in] DWORD cbData, [out] int *piIndex); HRESULT GetData( [in] int iIndex, [out, size_is(cbData)] BYTE *pData, [in] DWORD cbData); HRESULT QueryInfo( [in] int iIndex, [in, out] DWORD *pdwSlot, [in, out] DWORD *pcbData); HRESULT Delete([in] int iIndex); }; [ uuid(47851649-a2ef-4e67-baec-c6a153ac72ec), helpstring("MRU using a LPITEMIDLIST key"), local, ] interface IMruPidlList : IUnknown { HRESULT InitList( [in] UINT uMax, [in] HKEY hKey, [in, string] LPCWSTR pszSubKey); HRESULT UsePidl( [in] LPCITEMIDLIST pidl, [out] DWORD *pdwSlot); // QueryPidl returns S_OK if rgdwSlots[0] is the pidl queried for // or S_FALSE if it is one of the parents // or failure if nothing was inserted in rgdwSlots HRESULT QueryPidl( [in] LPCITEMIDLIST pidl, [in] DWORD cSlots, [out, size_is(cSlots), length_is(*pcSlotsFetched)] DWORD *rgdwSlots, [out] DWORD *pcSlotsFetched); HRESULT PruneKids([in] LPCITEMIDLIST pidl); }; // INSCTree Behavior flags: (INSCTree::Initialize(..., dwFlags)) cpp_quote("#define NSS_DROPTARGET 0x0001 // register as a drop target") cpp_quote("#define NSS_BROWSERSELECT 0x0002 // Use the browser style selection (see above)") cpp_quote("#define NSS_NOHISTSELECT 0x0004 // Do not select the history entry on navigations.") cpp_quote("#define NSS_MULTISELECT 0x0008") cpp_quote("#define NSS_BORDER 0x0010") cpp_quote("#define NSS_NORMALTREEVIEW 0x0020") cpp_quote("#define NSS_HEADER 0x0040") // NSCTree Modes: (INSCTree::SetNscMode(nMode)) typedef enum { MODE_NORMAL = 0x0000, // Act like a normal tree view MODE_CONTROL = 0x0001, // Have behaviors specific the being hosted in a control MODE_HISTORY = 0x0002, // Have behaviors specific to the History pane. MODE_FAVORITES = 0x0004, // Have behaviors specific to the Favorites pane. MODE_CUSTOM = 0x0008, // custom behavior defined by flags passed to initialize } nscTreeMode; [ uuid(43A8F463-4222-11d2-B641-006097DF5BD4), helpstring("Private Namespace tree control interface"), local ] interface INSCTree : IUnknown { // CreateTree() dwStyles - these are normal window styles. HRESULT CreateTree([in] HWND hwndParent, [in] DWORD dwStyles, [out] HWND *phwnd); // Initialize() grfFlags - these are SHCONTF_* flags defined in . // dwFlags - these are NSCTree Behavior flags defined below // NSS_DROPTARGET - Enable drag and drop // NSS_BROWSERSELECT - With this on, a selection is different than the standard // tree view selection in that a box is drawn around the sub heirarchy selected // and the buttons are turned off. HRESULT Initialize([in] LPCITEMIDLIST pidlRoot, [in] DWORD grfFlags, [in] DWORD dwFlags); HRESULT ShowWindow([in] BOOL fShow); HRESULT Refresh(); HRESULT GetSelectedItem([out] LPITEMIDLIST * ppidl, [in] int nItem); HRESULT SetSelectedItem([in] LPCITEMIDLIST pidl, [in] BOOL fCreate, [in] BOOL fReinsert, [in] int nItem); // SetNscMode() nMode - these are modes that inherit general behavior. Defined below HRESULT GetNscMode([out] UINT * pnMode); HRESULT SetNscMode([in] UINT nMode); HRESULT GetSelectedItemName([in, out] LPWSTR pszName, [in] DWORD cchName); HRESULT BindToSelectedItemParent([in] REFIID riid, [out] void **ppv, [out] LPITEMIDLIST *ppidl); BOOL InLabelEdit(); }; [ uuid(801C1AD5-C47C-428c-97AF-E991E4857D97), local ] interface INSCTree2 : INSCTree { HRESULT RightPaneNavigationStarted([in] LPITEMIDLIST pidl); HRESULT RightPaneNavigationFinished([in] LPITEMIDLIST pidl); HRESULT CreateTree2([in] HWND hwndParent, [in] DWORD dwStyle, [in] DWORD dwExStyle, [out] HWND *phwnd); } [ uuid(3a77ce00-6f74-4594-9399-c4578aa4a1b6), helpstring("used to notify browser of application start notifications"), ] interface INotifyAppStart : IUnknown { HRESULT AppStarting(void); HRESULT AppStarted(void); }; [ uuid(e787f2c0-3d21-4d98-85c8-a038195ba649), local ] interface IInitViewLinkedWebOC : IUnknown { HRESULT SetViewLinkedWebOC([in] BOOL bValue); HRESULT IsViewLinkedWebOC([out] BOOL* pbValue); HRESULT SetViewLinkedWebOCFrame([in] IDispatch * punk); HRESULT GetViewLinkedWebOCFrame([out] IDispatch ** punk); HRESULT SetFrameName([in] BSTR bstrFrameName); }; [ helpstring("Interface to handle nsc specifics for different bands"), uuid(CF1609EC-FA4B-4818-AB01-55643367E66D), object, local ] interface INamespaceProxy : IUnknown { HRESULT GetNavigateTarget(LPCITEMIDLIST pidl, LPITEMIDLIST * ppidlTarget, ULONG * pulAttrib); HRESULT Invoke(LPCITEMIDLIST pidl); HRESULT OnSelectionChanged(LPCITEMIDLIST pidl); HRESULT RefreshFlags(DWORD *pdwStyle, DWORD *pdwExStyle, DWORD *dwEnum); HRESULT CacheItem(LPCITEMIDLIST pidl); } cpp_quote("// INTERFACE: IBrowserFrameOptions") cpp_quote("//") cpp_quote("// This interface was implemented so a browser or host can ask a ShellView/ShelNameSpace what") cpp_quote("// kind of 'Behavior' is appropriate for that view. These are normally PM type decisions to") cpp_quote("// refine the user experience.") cpp_quote("// ") cpp_quote("// For example, should the IE globe be added to the toolbar") cpp_quote("// when the view is a HTTP web page? (Yes) When the view is a FTP Folders? When the view") cpp_quote("// is the file system? (No) When the view is Web Folders? (Maybe, did you as a PM?)") cpp_quote("// It's very important for the view to ask the NSE if it does or doesn't want the behavior instead of") cpp_quote("// trying to sniff the pidl and guess. An example of this kind of bad coding style is all the") cpp_quote("// code that calls IsURLChild(). Currently we have a lot of hacky code that says turn such-and-such") cpp_quote("// behavior on for HTTP and FTP URLs but not Web Folders and not ABOUT URLs, so it's very important to") cpp_quote("// use this interface to do the work for you. This will also allow Web Folders to fix a lot of bugs because") cpp_quote("// the code hasn't yet been 'tweaked' to give the behavior Web Folders wants.") cpp_quote("//") cpp_quote("// IBrowserFrameOptions::GetBrowserOptions()") cpp_quote("// dwMask is the logical OR of bits to look for. pdwOptions is not optional and") cpp_quote("// it's return value will always equal or will be a subset of dwMask.") cpp_quote("// If the function succeeds, the return value must be S_OK and pdwOptions needs to be filled in.") cpp_quote("// If the function fails, pdwOptions needs to be filled in with BFO_NONE.") cpp_quote("//") cpp_quote("// NOTE: The definition of the bit needs to be OFF for the most common NSE. This way shell name space") cpp_quote("// extensions that don't implement this interface or haven't been updated to handle this bit will") cpp_quote("// default to behavior that is the most common. An example of this is the BFO_NO_FOLDER_OPTIONS") cpp_quote("// where this bit off will give the 'Folder Options', which is the most common case. This is especially") cpp_quote("// true since this interface is internal only.") [ uuid(10DF43C8-1DBE-11d3-8B34-006097DF5BD4), object, local ] interface IBrowserFrameOptions : IUnknown { typedef [unique] IBrowserFrameOptions * LPBROWSERFRAMEOPTIONS; enum { BFO_NONE = 0x00000000, // Do nothing. BFO_BROWSER_PERSIST_SETTINGS = 0x00000001, // Does this item want the browser stream? (Same window position as IE browser windows?) BFO_RENAME_FOLDER_OPTIONS_TOINTERNET = 0x00000002, // Rename "Folder Options" to "Internet Options" in the Tools or View menu? BFO_BOTH_OPTIONS = 0x00000004, // Keep both "Folder Options" and "Internet Options" in the Tools or View menu? BIF_PREFER_INTERNET_SHORTCUT = 0x00000008, // NSE would prefer a .url shortcut over a .lnk shortcut BFO_BROWSE_NO_IN_NEW_PROCESS = 0x00000010, // Specify this flag if you don't want the "Browse in New Process" via invoking a shortcut. BFO_ENABLE_HYPERLINK_TRACKING = 0x00000020, // Does this NSE want it's display name tracked to determine when hyperlinks should be tagged as previously used? BFO_USE_IE_OFFLINE_SUPPORT = 0x00000040, // Use "Internet Explorer"'s offline support? BFO_SUBSTITUE_INTERNET_START_PAGE = 0x00000080, // Does this NSE want to use the Start Page support? BFO_USE_IE_LOGOBANDING = 0x00000100, // Use the Brand block in the Toolbar. (Spinning globe or whatever it is this year) BFO_ADD_IE_TOCAPTIONBAR = 0x00000200, // Should " - Internet Explorer" be appended to display name in the Captionbar BFO_USE_DIALUP_REF = 0x00000400, // Should the DialUp ref count get a ref while the browse is navigated to this location? This will also enable the ICW and Software update. BFO_USE_IE_TOOLBAR = 0x00000800, // Should the IE toolbar be used? BFO_NO_PARENT_FOLDER_SUPPORT = 0x00001000, // Can you NOT navigate to a parent folder? Used for Backspace button to parent folder or the View.GoTo.ParentFolder feature. BFO_NO_REOPEN_NEXT_RESTART = 0x00002000, // Browser windows are NOT reopened the next time the shell boots if the windows were left open on the previous logoff. Does this NSE want the same feature? BFO_GO_HOME_PAGE = 0x00004000, // Add "Home Page" to menu (Go). BFO_PREFER_IEPROCESS = 0x00008000, // prefers to use IEXPLORE.EXE over EXPLORER.EXE BFO_SHOW_NAVIGATION_CANCELLED = 0x00010000, // If navigation is aborted, show the "Action Cancelled" HTML page. BFO_QUERY_ALL = 0xFFFFFFFF, // Return all values set. }; typedef DWORD BROWSERFRAMEOPTIONS; HRESULT GetFrameOptions([in] BROWSERFRAMEOPTIONS dwMask, [out] BROWSERFRAMEOPTIONS * pdwOptions); } //----------------------------------------- // Search Companion Info object //----------------------------------------- [ uuid(DB5CEF35-BEC6-4762-A1BD-253F5BF67C72), helpstring("ISearchCompanionInfo Interface"), pointer_default(unique) ] interface ISearchCompanionInfo : IUnknown { HRESULT IsSearchCompanionInetAvailable([out] BOOL* pfAvailable); }; cpp_quote("#include ") typedef struct tagSMDATA { DWORD dwMask; // SMDM_* values DWORD dwFlags; // Not used HMENU hmenu; // Static HMENU portion. HWND hwnd; // HWND owning the HMENU UINT uId; // Id of the item in the menu (-1 for menu itself) UINT uIdParent; // Id of the item spawning this menu UINT uIdAncestor; // Id of the very top item in the chain of ShellFolders IUnknown* punk; // IUnkown of the menuband LPITEMIDLIST pidlFolder; // pidl of the ShellFolder portion LPITEMIDLIST pidlItem; // pidl of the item in the ShellFolder portion IShellFolder* psf; // IShellFolder for the shell folder portion void* pvUserData; // User defined Data associated with a pane. } SMDATA, *LPSMDATA; cpp_quote("// Mask") cpp_quote("#define SMDM_SHELLFOLDER 0x00000001 // This is for an item in the band") cpp_quote("#define SMDM_HMENU 0x00000002 // This is for the Band itself") cpp_quote("#define SMDM_TOOLBAR 0x00000004 // Plain toolbar, not associated with a shell folder or hmenu") cpp_quote("// Flags (bitmask)") typedef struct tagSMINFO { DWORD dwMask; // SMIM_* DWORD dwType; // SMIT_* DWORD dwFlags; // SMIF_* int iIcon; } SMINFO, * PSMINFO; typedef struct tagSHCSCHANGENOTIFYSTRUCT { LONG lEvent; // Change notify Event LPCITEMIDLIST pidl1; // Pidl 1 Passed in from the Change notify LPCITEMIDLIST pidl2; // Pidl 2 Passed in from the Change notify } SMCSHCHANGENOTIFYSTRUCT, *PSMCSHCHANGENOTIFYSTRUCT; cpp_quote("#include ") /* Return to byte packing */ // Mask flags enum { SMIM_TYPE = 0x00000001, SMIM_FLAGS = 0x00000002, SMIM_ICON = 0x00000004 }; // Types for mbiinfo.dwType enum { SMIT_SEPARATOR = 0x00000001, SMIT_STRING = 0x00000002 }; // Flags for mbiinfo.dwFlags enum { SMIF_ICON = 0x00000001, // Show an icon SMIF_ACCELERATOR = 0x00000002, // Underline the character marked w/ '&' SMIF_DROPTARGET = 0x00000004, // Item is a drop target SMIF_SUBMENU = 0x00000008, // Item has a submenu SMIF_VOLATILE = 0x00000010, // Obsolete. SMIF_CHECKED = 0x00000020, // Item has a Checkmark SMIF_DROPCASCADE = 0x00000040, // Item can cascade out during drag/drop SMIF_HIDDEN = 0x00000080, // Don't display item SMIF_DISABLED = 0x00000100, // Should be unselectable. Grey. SMIF_TRACKPOPUP = 0x00000200, // Should be unselectable. Grey. SMIF_DEMOTED = 0x00000400, // Display item in "Demoted" state. SMIF_ALTSTATE = 0x00000800, // Displayed in "Altered State" SMIF_DRAGNDROP = 0x00001000, // If item that is being dragged hovers over an item for long enough then it SMC_EXECs that item SMIF_NEW = 0x00002000, // Item is newly-installed or otherwise attractive (Whistler) }; // Messages // // SMC_INITMENU Sent when a menu is shown. // // // SMC_GETOBJECT // wParam = riid // lParam = ppv // Sent to get an object that supports riid. // cpp_quote("#define SMC_INITMENU 0x00000001 // The callback is called to init a menuband") cpp_quote("#define SMC_CREATE 0x00000002") cpp_quote("#define SMC_EXITMENU 0x00000003 // The callback is called when menu is collapsing") cpp_quote("#define SMC_EXEC 0x00000004 // The callback is called to execute an item") cpp_quote("#define SMC_GETINFO 0x00000005 // The callback is called to return DWORD values") cpp_quote("#define SMC_GETSFINFO 0x00000006 // The callback is called to return DWORD values") cpp_quote("#define SMC_GETOBJECT 0x00000007 // The callback is called to get some object") cpp_quote("#define SMC_GETSFOBJECT 0x00000008 // The callback is called to get some object") cpp_quote("#define SMC_SFEXEC 0x00000009 // The callback is called to execute an shell folder item") cpp_quote("#define SMC_SFSELECTITEM 0x0000000A // The callback is called when an item is selected") cpp_quote("#define SMC_SELECTITEM 0x0000000B // The callback is called when an item is selected") cpp_quote("#define SMC_GETSFINFOTIP 0x0000000C // The callback is called to get some object") cpp_quote("#define SMC_GETINFOTIP 0x0000000D // The callback is called to get some object") cpp_quote("#define SMC_INSERTINDEX 0x0000000E // New item insert index") cpp_quote("#define SMC_POPUP 0x0000000F // InitMenu/InitMenuPopup (sort of)") cpp_quote("#define SMC_REFRESH 0x00000010 // Menus have completely refreshed. Reset your state.") cpp_quote("#define SMC_DEMOTE 0x00000011 // Demote an item") cpp_quote("#define SMC_PROMOTE 0x00000012 // Promote an item, wParam = SMINV_* flag") cpp_quote("#define SMC_BEGINENUM 0x00000013 // tell callback that we are beginning to ENUM the indicated parent") cpp_quote("#define SMC_ENDENUM 0x00000014 // tell callback that we are ending the ENUM of the indicated paren") cpp_quote("#define SMC_MAPACCELERATOR 0x00000015 // Called when processing an accelerator.") cpp_quote("#define SMC_DEFAULTICON 0x00000016 // Returns Default icon location in wParam, index in lParam") cpp_quote("#define SMC_NEWITEM 0x00000017 // Notifies item is not in the order stream.") cpp_quote("#define SMC_GETMINPROMOTED 0x00000018 // Returns the minimum number of promoted items") cpp_quote("#define SMC_CHEVRONEXPAND 0x00000019 // Notifies of a expansion via the chevron") cpp_quote("#define SMC_DISPLAYCHEVRONTIP 0x0000002A // S_OK display, S_FALSE not.") cpp_quote("#define SMC_DESTROY 0x0000002B // Called when a pane is being destroyed.") cpp_quote("#define SMC_SETOBJECT 0x0000002C // Called to save the passed object") cpp_quote("#define SMC_SETSFOBJECT 0x0000002D // Called to save the passed object") cpp_quote("#define SMC_SHCHANGENOTIFY 0x0000002E // Called when a Change notify is received. lParam points to SMCSHCHANGENOTIFYSTRUCT") cpp_quote("#define SMC_CHEVRONGETTIP 0x0000002F // Called to get the chevron tip text. wParam = Tip title, Lparam = TipText Both MAX_PATH") cpp_quote("#define SMC_SFDDRESTRICTED 0x00000030 // Called requesting if it's ok to drop. wParam = IDropTarget.") cpp_quote("#define SMC_GETIMAGELISTS 0x00000031 // Called to get the small & large icon image lists, otherwise it will default to shell image list") cpp_quote("#define SMC_CUSTOMDRAW 0x00000032 // Requires SMINIT_CUSTOMDRAW") cpp_quote("#define SMC_BEGINDRAG 0x00000033 // Called to get preferred drop effect. wParam = &pdwEffect") cpp_quote("#define SMC_MOUSEFILTER 0x00000034 // Called to allow host to filter mouse messages. wParam=bRemove, lParam=pmsg") cpp_quote("#define SMC_DUMPONUPDATE 0x00000035 // S_OK if host wants old trash-everything-on-update behavior (recent docs)") cpp_quote("") cpp_quote("#define SMC_FILTERPIDL 0x10000000 // The callback is called to see if an item is visible") cpp_quote("#define SMC_CALLBACKMASK 0xF0000000 // Mask of comutationally intense messages") [ uuid(4CA300A1-9B8D-11d1-8B22-00C04FD918D0), object, pointer_default(unique), local // cannot marshal because method has polymorphic parameters ] interface IShellMenuCallback : IUnknown { // psmd is [in,out] because SMC_MAPACCELERATOR returns a value in uId HRESULT CallbackSM([in,out] LPSMDATA psmd, UINT uMsg, WPARAM wParam, LPARAM lParam); }; //------------------------------------------------------------------------- // // IShellMenu interface // //------------------------------------------------------------------------- cpp_quote("#define SMINIT_DEFAULT 0x00000000 // No Options") cpp_quote("#define SMINIT_RESTRICT_CONTEXTMENU 0x00000001 // Don't allow Context Menus") cpp_quote("#define SMINIT_RESTRICT_DRAGDROP 0x00000002 // Don't allow Drag and Drop") cpp_quote("#define SMINIT_TOPLEVEL 0x00000004 // This is the top band.") cpp_quote("#define SMINIT_DEFAULTTOTRACKPOPUP 0x00000008 // When no callback is specified, ") // default all HMENU items to Trackpopup cpp_quote("#define SMINIT_CACHED 0x00000010") cpp_quote("#define SMINIT_USEMESSAGEFILTER 0x00000020") cpp_quote("#define SMINIT_LEGACYMENU 0x00000040 // Old Menu behaviour.") cpp_quote("#define SMINIT_CUSTOMDRAW 0x00000080 // Send SMC_CUSTOMDRAW") // Internal Menuband setting cpp_quote("#define SMINIT_NOSETSITE 0x00010000 // Internal setting") // These are mutually Exclusive cpp_quote("#define SMINIT_VERTICAL 0x10000000 // This is a vertical menu") cpp_quote("#define SMINIT_HORIZONTAL 0x20000000 // This is a horizontal menu (does not inherit)") cpp_quote("#define SMINIT_MULTICOLUMN 0x40000000 // this is a multi column menu") cpp_quote("#define ANCESTORDEFAULT (UINT)-1") cpp_quote("#define SMSET_TOP 0x10000000 // Bias this namespace to the top of the menu") cpp_quote("#define SMSET_BOTTOM 0x20000000 // Bias this namespace to the bottom of the menu") cpp_quote("#define SMSET_DONTOWN 0x00000001 // The Menuband doesn't own the non-ref counted object") // and should not destroy it. cpp_quote("#define SMSET_MERGE 0x00000002") cpp_quote("#define SMSET_NOEMPTY 0x00000004 // Dont show (Empty) on shell folder") cpp_quote("#define SMSET_USEBKICONEXTRACTION 0x00000008 // Use the background icon extractor") cpp_quote("#define SMSET_HASEXPANDABLEFOLDERS 0x00000010 // Need to call SHIsExpandableFolder") cpp_quote("#define SMSET_DONTREGISTERCHANGENOTIFY 0x00000020 // ShellFolder is a discontiguous child of a parent shell folder") cpp_quote("#define SMSET_COLLAPSEONEMPTY 0x00000040 // When Empty, causes a menus to collapse") cpp_quote("#define SMSET_USEPAGER 0x00000080 //Enable pagers in static menus") cpp_quote("#define SMSET_NOPREFIX 0x00000100 //Enable ampersand in static menus") cpp_quote("#define SMSET_SEPARATEMERGEFOLDER 0x00000200 //Insert separator when MergedFolder host changes") cpp_quote("#define SMINV_REFRESH 0x00000001") cpp_quote("#define SMINV_ICON 0x00000002") cpp_quote("#define SMINV_POSITION 0x00000004") cpp_quote("#define SMINV_ID 0x00000008") cpp_quote("#define SMINV_NEXTSHOW 0x00000010 // Does Invalidates on next show.") cpp_quote("#define SMINV_PROMOTE 0x00000020 // Does Invalidates on next show.") cpp_quote("#define SMINV_DEMOTE 0x00000040 // Does Invalidates on next show.") cpp_quote("#define SMINV_FORCE 0x00000080") cpp_quote("#define SMINV_NOCALLBACK 0x00000100 // Invalidates, but does not call the callback.") cpp_quote("#define SMINV_INITMENU 0x00000200 // Call callback's SMC_INITMENU as part of invalidate (Whistler)") [ uuid(EE1F7637-E138-11d1-8379-00C04FD918D0), object, pointer_default(unique), /* some of our pointers can be NULL (as noted) */ local ] interface IShellMenu : IUnknown { HRESULT Initialize([in] IShellMenuCallback* psmc, UINT uId, UINT uIdAncestor, DWORD dwFlags); HRESULT GetMenuInfo([out] IShellMenuCallback** ppsmc, [out] UINT* puId, [out] UINT* puIdAncestor, [out] DWORD* pdwFlags); HRESULT SetShellFolder(IShellFolder* psf, [in] LPCITEMIDLIST pidlFolder, HKEY hKey, DWORD dwFlags); HRESULT GetShellFolder([out] DWORD* pdwFlags, [out] LPITEMIDLIST* ppidl, [in] REFIID riid, [out, iid_is(riid)] void** ppv); HRESULT SetMenu([in] HMENU hmenu, [in] HWND hwnd, DWORD dwFlags); HRESULT GetMenu([out /* can be null */] HMENU* phmenu, [out /* can be null */] HWND* phwnd, [out /* can be null */] DWORD* pdwFlags); HRESULT InvalidateItem([in /* can be null */] LPSMDATA psmd, DWORD dwFlags); HRESULT GetState([out] LPSMDATA psmd); HRESULT SetMenuToolbar([in] IUnknown* punk, DWORD dwFlags); }; // New for Whistler - used by Start Pane to get the Programs submenu [ uuid(6f51c646-0efe-4370-882a-c1f61cb27c3b), object, pointer_default(unique), local ] interface IShellMenu2 : IShellMenu { // Retrieves an interface on a submenu. HRESULT GetSubMenu(UINT idCmd, [in] REFIID riid, [out, iid_is(riid)] void **ppvObj); HRESULT SetToolbar([in] HWND hwnd, [in] DWORD dwFlags); HRESULT SetMinWidth([in] int cxMenu); HRESULT SetNoBorder([in] BOOL fNoBorder); HRESULT SetTheme([in, string] LPCWSTR pszTheme); }; [ uuid(8278F932-2A3E-11d2-838F-00C04FD918D0), object, pointer_default(unique), local ] interface ITrackShellMenu : IShellMenu { HRESULT SetObscured([in] HWND hwndTB, [in] IUnknown* punkBand, DWORD dwSMSetFlags); HRESULT Popup([in] HWND hwnd, [in] POINTL *ppt, [in] RECTL *prcExclude, DWORD dwFlags); }; [ uuid(6d45a930-f71a-11d0-9ea7-00805f714772), helpstring("thumbnail extractor helper object"), local ] interface IThumbnail : IUnknown { // ::Init(HWND hwnd, UINT uMsg) // Must initialize interface before use. The hwnd given will receive the // uMsg message when the bitmap is computed (cf. GetBitmap()). // // ::GetBitmap(LPCWSTR pwszFile, DWORD dwItem, LONG lWidth, LONG lHeight) // Call this function to actually compute and return the bitmap. pszFile is // the parsing name (filename) whose bitmap is to be computed. lWidth and lHeight are the // width and height respectively of the rectangle containing the thumbnail, // i.e. the size of the resultant bitmap. When the bitmap is computed, the // uMsg is sent to the hwnd (cf. Init()) where LPARAM is the HBITMAP, and // WPARAM is dwItem (so it's an ID to identify the bitmap). // NOTE: Call GetBitmap(NULL,...) to cancel any pending requests. HRESULT Init(HWND hwnd, UINT uMsg); HRESULT GetBitmap(LPCWSTR pszFile, DWORD dwItem, LONG lWidth, LONG lHeight); }; [ uuid(500202A0-731E-11d0-B829-00C04FD706EC), helpstring("thumbnail extractor helper object, supports pidl"), local ] interface IThumbnail2 : IThumbnail { HRESULT GetBitmapFromIDList(LPCITEMIDLIST pidl, DWORD dwItem, LONG lWidth, LONG lHeight); } [ helpstring("interface to initialize MRU in auto complete"), uuid(F729FC5E-8769-4f3e-BDB2-D7B50FD2275B), object, local ] interface IACLCustomMRU : IUnknown { HRESULT Initialize([in, string] LPCWSTR pwszMRURegKey, [in] DWORD dwMax); HRESULT AddMRUString([in, string] LPCWSTR pwszEntry); } cpp_quote("#if _WIN32_IE >= 0x0600") cpp_quote("// used in both shell32 and browseui") [ helpstring("IShellBrowserService"), uuid(1307ee17-ea83-49eb-96b2-3a28e2d7048a), // IID_IShellBrowserService object, pointer_default(unique) ] interface IShellBrowserService : IUnknown { HRESULT GetPropertyBag([in] DWORD dwFlags, [in] REFIID riid, [out, iid_is(riid)] void** ppv); }; cpp_quote("#endif // _WIN32_IE >= 0x0600") [ uuid(aba1bbae-8280-4b0c-80a3-39095d68881f) ] library IEPrivateObjects { // CLSID_HWEventSettings // CLSID_MruPidlList [ uuid(42aedc87-2188-41fd-b9a3-0c966feabec1) ] coclass MruPidlList { interface IMruPidlList; } // CLSID_MruLongList [ uuid(53bd6b4e-3780-4693-afc3-7161c2f3ee9c) ] coclass MruLongList { interface IMruDataList; } // CLSID_MruLongList [ uuid(53bd6b4f-3780-4693-afc3-7161c2f3ee9c) ] coclass MruShortList { interface IMruDataList; } // CLSID_FolderMarshalStub [ uuid(bf50b68e-29b8-4386-ae9c-9734d5117cd5) ] coclass FolderMarshalStub { interface IPersist; } // CLSID_MailRecipient [ uuid(9E56BE60-C50F-11CF-9A2C-00A0C90A90CE) ] coclass MailRecipient { interface IDropTarget; }; [ uuid(AC1B0D5D-DD59-4ff0-93F8-A84373821606) ] coclass SearchCompanionInfo { interface ISearchCompanionInfo; } // CLSID_TrackShellMenu [ uuid(8278F931-2A3E-11d2-838F-00C04FD918D0) ] coclass TrackShellMenu { interface ITrackShellMenu; } // CLSID_Thumbnail [ uuid(7487cd30-f71a-11d0-9ea7-00805f714772)] coclass Thumbnail { interface IThumbnail; } }