import "oaidl.idl"; import "shobjidl.idl"; interface IShellMoniker; [ helpstring("Shell Namespace helper"), uuid(1079acf9-29bd-11d3-8e0d-00c04f6837d5), object, pointer_default(unique) ] interface IShellMoniker : IUnknown { HRESULT BindToObject( [in] IBindCtx *pbc, [in] REFIID riid, [out, iid_is(riid)] void **ppvOut); HRESULT BindToStorage( [in] IBindCtx *pbc, [in] REFIID riid, [out, iid_is(riid)] void **ppvOut); HRESULT GetDisplayName( [in] IBindCtx *pbc, [in] SHGDNF shgdnFlags, [out, string] LPOLESTR *ppszName); HRESULT GetAttributes( [in] SFGAOF sfgaoMask, [out] SFGAOF *psfgaoFlags); HRESULT GetProperty( [in] IBindCtx *pbc, [in] REFFMTID fmtid, [in] PROPID pid, [out] VARIANT *pv); }; interface IStorageDescriptor; [ helpstring("Describes the underlying storage"), uuid(1079acfa-29bd-11d3-8e0d-00c04f6837d5), object, pointer_default(unique) ] interface IStorageDescriptor : IUnknown { // IStorageDescriptor methods HRESULT GetStgDescription([out, string] LPOLESTR *ppszName); }; interface IFileSystemDescriptor; [ helpstring("Describes file system Objects"), uuid(1079acfb-29bd-11d3-8e0d-00c04f6837d5), object, pointer_default(unique) ] interface IFileSystemDescriptor : IStorageDescriptor { // IFileSystemDescriptor methods HRESULT GetFSPath([out, string] LPOLESTR *ppszName); }; interface IMonikerHelper; [ helpstring("Assist legacy applications to use IMoniker"), uuid(679d9e36-f8f9-11d2-8deb-00c04f6837d5), object, ] interface IMonikerHelper : IUnknown { cpp_quote("// flags for IMonikerHelper methods") cpp_quote("// MKHELPF_INIT_READONLY read only helper, Commit fails with E_ACCESSDENIED") cpp_quote("// MKHELPF_INIT_SAVEAS write only helper, no download required for GLP") cpp_quote("// MKHELPF_FORCEROUNDTRIP never use local cache (always roundtrip)") cpp_quote("// MKHELPF_NOPROGRESSUI no progress will be displayed, only errors/confirmations") cpp_quote("// MKHELPF_NOUI overrides all other UI flags") [v1_enum] enum { MKHELPF_INIT_READONLY = 0x00000001, MKHELPF_INIT_SAVEAS = 0x00000002, MKHELPF_FORCEROUNDTRIP = 0x00000010, MKHELPF_NOPROGRESSUI = 0x00000020, MKHELPF_NOUI = 0x00000040, }; typedef DWORD MKHELPF; // IMonikerHelper methods HRESULT Init([in] MKHELPF flags, [in] IMoniker *pmk); HRESULT GetLocalPath([in] MKHELPF flags, [in] HWND hwnd, [in] LPCWSTR pszTitle, [out, size_is(*pcchOut)] LPWSTR pszOut, [in, out] DWORD *pcchOut); HRESULT Commit([in] MKHELPF flags, [in] HWND hwnd, [in] LPCWSTR pszTitle); }; [ uuid(50a7e9b1-70ef-11d1-b75a-00c04f6837d5), // LIBID_ShellHelpers helpstring("Microsoft Shell Helper Objects"), version(1.0), restricted ] library ShellHelpers { [ uuid(1079acf8-29bd-11d3-8e0d-00c04f6837d5), // CLSID_ShellMoniker ] coclass ShellMoniker { [restricted] interface IShellMoniker; }; [ uuid(679d9e37-f8f9-11d2-8deb-00c04f6837d5), // CLSID_MonikerHelper ] coclass MonikerHelper { [restricted] interface IMonikerHelper; }; };