| /* | 
 |  * Copyright 2005 Jacek Caban | 
 |  * | 
 |  * This library is free software; you can redistribute it and/or | 
 |  * modify it under the terms of the GNU Lesser General Public | 
 |  * License as published by the Free Software Foundation; either | 
 |  * version 2.1 of the License, or (at your option) any later version. | 
 |  * | 
 |  * This library is distributed in the hope that it will be useful, | 
 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
 |  * Lesser General Public License for more details. | 
 |  * | 
 |  * You should have received a copy of the GNU Lesser General Public | 
 |  * License along with this library; if not, write to the Free Software | 
 |  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
 |  */ | 
 |  | 
 | import "urlmon.idl"; | 
 |  | 
 | interface IHlink; | 
 | interface IHlinkSite; | 
 | interface IHlinkFrame; | 
 | interface IHlinkBrowseContext; | 
 |  | 
 | cpp_quote("HRESULT WINAPI HlinkCreateFromMoniker(IMoniker*, LPCWSTR, LPCWSTR, IHlinkSite*, DWORD, IUnknown*, REFIID, void**);") | 
 | cpp_quote("HRESULT WINAPI HlinkCreateFromString(LPCWSTR, LPCWSTR, LPCWSTR, IHlinkSite*, DWORD, IUnknown*, REFIID, void**);") | 
 | cpp_quote("HRESULT WINAPI HlinkCreateFromData(IDataObject*, IHlinkSite*, DWORD dwSiteData, IUnknown*, REFIID, void**);") | 
 | cpp_quote("HRESULT WINAPI HlinkCreateExtensionServices(LPCWSTR, HWND, LPCWSTR, LPCWSTR, IUnknown*, REFIID, void**);") | 
 | cpp_quote("HRESULT WINAPI HlinkQueryCreateFromData(IDataObject*);") | 
 | cpp_quote("HRESULT WINAPI HlinkClone(IHlink*, REFIID, IHlinkSite*, DWORD, void **);") | 
 | cpp_quote("HRESULT WINAPI HlinkCreateBrowseContext(IUnknown*, REFIID, void **);") | 
 | cpp_quote("HRESULT WINAPI HlinkNavigateToStringReference(LPCWSTR, LPCWSTR, IHlinkSite*, DWORD, IHlinkFrame*, DWORD, LPBC, IBindStatusCallback*, IHlinkBrowseContext*);") | 
 | cpp_quote("HRESULT WINAPI HlinkNavigate(IHlink*, IHlinkFrame*, DWORD, LPBC, IBindStatusCallback*, IHlinkBrowseContext*);") | 
 | cpp_quote("HRESULT WINAPI HlinkOnNavigate(IHlinkFrame*, IHlinkBrowseContext*, DWORD, IMoniker*, LPCWSTR, LPCWSTR, ULONG*);") | 
 | cpp_quote("HRESULT WINAPI HlinkIsShortcut(LPCWSTR);") | 
 | cpp_quote("HRESULT WINAPI HlinkTranslateURL(LPCWSTR,DWORD,LPWSTR*);") | 
 | cpp_quote("HRESULT WINAPI HlinkParseDisplayName(LPBC,LPCWSTR,BOOL,ULONG*,IMoniker**);") | 
 | cpp_quote("HRESULT WINAPI HlinkResolveMonikerForData(LPMONIKER,DWORD,LPBC,ULONG,FORMATETC*,IBindStatusCallback*,LPMONIKER);") | 
 |  | 
 | typedef enum _HLSR_NOREDEF10 { | 
 |     HLSR_HOME, | 
 |     HLSR_SEARCHPAGE, | 
 |     HLSR_HISTORYFOLDER | 
 | } HLSR; | 
 |  | 
 | cpp_quote("HRESULT WINAPI HlinkSetSpecialReference(ULONG uReference, LPCWSTR pwzReference);") | 
 | cpp_quote("HRESULT WINAPI HlinkGetSpecialReference(ULONG uReference, LPWSTR *ppwzReference);") | 
 |  | 
 | cpp_quote("#define SID_SHlinkFrame IID_IHlinkFrame") | 
 |  | 
 | /***************************************************************************** | 
 |  *    IHlink interface | 
 |  */ | 
 | [ | 
 |     object, | 
 |     uuid(79EAC9C3-BAF9-11CE-8C82-00AA004BA90B), | 
 |     pointer_default(unique) | 
 | ] | 
 | interface IHlink: IUnknown | 
 | { | 
 |     typedef [unique] IHlink *LPHLINK; | 
 |  | 
 |     typedef enum { | 
 |         HLNF_INTERNALJUMP          = 0x00000001, | 
 |         HLNF_OPENINNEWWINDOW       = 0x00000002, | 
 |         HLNF_NAVIGATINGBACK        = 0x00000004, | 
 |         HLNF_NAVIGATINGFORWARD     = 0x00000008, | 
 |         HLNF_NAVIGATINGTOSTACKITEM = 0x00000010, | 
 |         HLNF_CREATENOHISTORY       = 0x00000020 | 
 |     } HLNF; | 
 |  | 
 |     typedef enum { | 
 |         HLINKGETREF_DEFAULT  = 0, | 
 |         HLINKGETREF_ABSOLUTE = 1, | 
 |         HLINKGETREF_RELATIVE = 2, | 
 |     } HLINKGETREF; | 
 |  | 
 |     typedef enum { | 
 |         HLFNAMEF_DEFAULT          = 0x00000000, | 
 |         HLFNAMEF_TRYCACHE         = 0x00000001, | 
 |         HLFNAMEF_TRYPRETTYTARGET  = 0x00000002, | 
 |         HLFNAMEF_TRYFULLTARGET    = 0x00000004, | 
 |         HLFNAMEF_TRYWIN95SHORTCUT = 0x00000008 | 
 |     } HLFNAMEF; | 
 |  | 
 |     typedef enum { | 
 |         HLINKMISC_RELATIVE = 0x00000001, | 
 |     } HLINKMISC; | 
 |  | 
 |     typedef enum { | 
 |         HLINKSETF_TARGET   = 0x00000001, | 
 |         HLINKSETF_LOCATION = 0x00000002 | 
 |     } HLINKSETF; | 
 |  | 
 |     HRESULT SetHlinkSite( | 
 |         [in, unique] IHlinkSite *pihlSite, | 
 |         [in] DWORD dwSiteData); | 
 |  | 
 |     HRESULT GetHlinkSite( | 
 |         [out] IHlinkSite **ppihlSite, | 
 |         [out] DWORD *pdwSiteData); | 
 |  | 
 |     HRESULT SetMonikerReference( | 
 |         [in] DWORD grfHLSETF, | 
 |         [in, unique] IMoniker *pimkTarget, | 
 |         [in, unique] LPCWSTR pwzLocation); | 
 |  | 
 |     HRESULT GetMonikerReference( | 
 |         [in]  DWORD dwWhichRef, | 
 |         [out] IMoniker **ppimkTarget, | 
 |         [out] LPWSTR *ppwzLocation); | 
 |  | 
 |     HRESULT SetStringReference( | 
 |         [in] DWORD grfHLSETF, | 
 |         [in, unique] LPCWSTR pwzTarget, | 
 |         [in, unique] LPCWSTR pwzLocation); | 
 |  | 
 |     HRESULT GetStringReference( | 
 |         [in]  DWORD dwWhichRef, | 
 |         [out] LPWSTR *ppwzTarget, | 
 |         [out] LPWSTR *ppwzLocation); | 
 |  | 
 |     HRESULT SetFriendlyName( | 
 |         [in, unique] LPCWSTR pwzFriendlyName); | 
 |  | 
 |     HRESULT GetFriendlyName( | 
 |         [in]  DWORD grfHLFNAMEF, | 
 |         [out] LPWSTR *ppwzFriendlyName); | 
 |  | 
 |     HRESULT SetTargetFrameName( | 
 |         [in, unique] LPCWSTR pwzTargetFrameName); | 
 |  | 
 |     HRESULT GetTargetFrameName( | 
 |         [out] LPWSTR *ppwzTargetFrameName); | 
 |  | 
 |     HRESULT GetMiscStatus( | 
 |         [out] DWORD *pdwStatus); | 
 |  | 
 |     HRESULT Navigate( | 
 |         [in] DWORD grfHLNF, | 
 |         [in, unique] LPBC pibc, | 
 |         [in, unique] IBindStatusCallback *pibsc, | 
 |         [in, unique] IHlinkBrowseContext *pihlbc); | 
 |  | 
 |     HRESULT SetAdditionalParams( | 
 |         [in, unique] LPCWSTR pwzAdditionalParams); | 
 |  | 
 |     HRESULT GetAdditionalParams( | 
 |         [out] LPWSTR *ppwzAdditionalParams); | 
 | } | 
 |  | 
 | /***************************************************************************** | 
 |  *    IHlinkSite interface | 
 |  */ | 
 | [ | 
 |     object, | 
 |     uuid(79EAC9C2-BAF9-11CE-8C82-00AA004BA90B), | 
 |     pointer_default(unique) | 
 | ] | 
 | interface IHlinkSite: IUnknown | 
 | { | 
 |     typedef [unique] IHlinkSite *LPHLINKSITE; | 
 |  | 
 |     typedef enum { | 
 |         HLINKWHICHMK_CONTAINER = 1, | 
 |         HLINKWHICHMK_BASE      = 2, | 
 |     } HLINKWHICHMK; | 
 |  | 
 |     HRESULT QueryService( | 
 |         [in] DWORD dwSiteData, | 
 |         [in] REFGUID guidService, | 
 |         [in] REFIID riid, | 
 |         [out, iid_is(riid)] IUnknown **ppiunk); | 
 |  | 
 |     HRESULT GetMoniker( | 
 |         [in] DWORD dwSiteData, | 
 |         [in] DWORD dwAssign, | 
 |         [in] DWORD dwWhich, | 
 |         [out] IMoniker **ppimk); | 
 |  | 
 |     HRESULT ReadyToNavigate( | 
 |         [in] DWORD dwSiteData, | 
 |         [in] DWORD dwReserved); | 
 |  | 
 |     HRESULT OnNavigationComplete( | 
 |         [in] DWORD dwSiteData, | 
 |         [in] DWORD dwreserved, | 
 |         [in] HRESULT hrError, | 
 |         [in, unique] LPCWSTR pwzError); | 
 | } | 
 |  | 
 | /***************************************************************************** | 
 |  *    IEnumHLITEM interface | 
 |  */ | 
 | [ | 
 |     local, | 
 |     object, | 
 |     uuid(79EAC9C6-BAF9-11CE-8C82-00AA004BA90B), | 
 |     pointer_default(unique) | 
 | ] | 
 | interface IEnumHLITEM : IUnknown | 
 | { | 
 |     typedef [unique] IEnumHLITEM *LPENUMHLITEM; | 
 |  | 
 |     typedef struct tagHLITEM { | 
 |         ULONG  uHLID; | 
 |         LPWSTR pwzFriendlyName; | 
 |     } HLITEM; | 
 |     typedef [unique] HLITEM *LPHLITEM; | 
 |  | 
 |     HRESULT Next( | 
 |         [in]  ULONG celt, | 
 |         [out] HLITEM *rgelt, | 
 |         [out] ULONG *pceltFetched); | 
 |  | 
 |     HRESULT Skip( | 
 |         [in] ULONG celt); | 
 |  | 
 |     HRESULT Reset(); | 
 |  | 
 |     HRESULT Clone( | 
 |         [out] IEnumHLITEM **ppienumhlitem); | 
 | } | 
 |  | 
 | /***************************************************************************** | 
 |  *    IHlinkBrowseContext interface | 
 |  */ | 
 | [ | 
 |     local, | 
 |     object, | 
 |     uuid(79EAC9C7-BAF9-11CE-8C82-00AA004BA90B), | 
 |     pointer_default(unique) | 
 | ] | 
 | interface IHlinkBrowseContext : IUnknown | 
 | { | 
 |     typedef [unique] IHlinkBrowseContext *LPHLINKBROWSECONTEXT; | 
 |  | 
 |     enum { | 
 |         HLTB_DOCKEDLEFT    = 0, | 
 |         HLTB_DOCKEDTOP     = 1, | 
 |         HLTB_DOCKEDRIGHT   = 2, | 
 |         HLTB_DOCKEDBOTTOM  = 3, | 
 |         HLTB_FLOATING      = 4 | 
 |     }; | 
 |  | 
 |     typedef struct _tagHLTBINFO { | 
 |         ULONG uDockType; | 
 |         RECT  rcTbPos; | 
 |     } HLTBINFO; | 
 |  | 
 |     enum { | 
 |         HLBWIF_HASFRAMEWNDINFO   = 0x00000001, | 
 |         HLBWIF_HASDOCWNDINFO     = 0x00000002, | 
 |         HLBWIF_FRAMEWNDMAXIMIZED = 0x00000004, | 
 |         HLBWIF_DOCWNDMAXIMIZED   = 0x00000008, | 
 |         HLBWIF_HASWEBTOOLBARINFO = 0x00000010, | 
 |         HLBWIF_WEBTOOLBARHIDDEN  = 0x00000020 | 
 |     }; | 
 |  | 
 |     typedef struct _tagHLBWINFO { | 
 |         ULONG    cbSize; | 
 |         DWORD    grfHLBWIF; | 
 |         RECT     rcFramePos; | 
 |         RECT     rcDocPos; | 
 |         HLTBINFO hltbinfo; | 
 |     } HLBWINFO; | 
 |  | 
 |     typedef [unique] HLBWINFO *LPHLBWINFO; | 
 |  | 
 |     enum { | 
 |         HLID_INVALID     = 0x00000000, | 
 |         HLID_PREVIOUS    = 0xFFFFFFFF, | 
 |         HLID_NEXT        = 0xFFFFFFFE, | 
 |         HLID_CURRENT     = 0xFFFFFFFD, | 
 |         HLID_STACKBOTTOM = 0xFFFFFFFC, | 
 |         HLID_STACKTOP    = 0xFFFFFFFB | 
 |     }; | 
 |  | 
 |     enum { | 
 |         HLQF_ISVALID   = 0x00000001, | 
 |         HLQF_ISCURRENT = 0x00000002 | 
 |     }; | 
 |  | 
 |     HRESULT Register( | 
 |         [in] DWORD reserved, | 
 |         [in, unique] IUnknown *piunk, | 
 |         [in, unique] IMoniker *pimk, | 
 |         [out] DWORD *pdwRegister); | 
 |  | 
 | cpp_quote("#ifdef WINE_NO_UNICODE_MACROS") | 
 | cpp_quote("#undef GetObject") | 
 | cpp_quote("#endif") | 
 |  | 
 |     HRESULT GetObject( | 
 |         [in, unique] IMoniker *pimk, | 
 |         [in] BOOL fBindIfRootRegistered, | 
 |         [out] IUnknown **ppiunk); | 
 |  | 
 |     HRESULT Revoke( | 
 |         [in] DWORD dwRegister); | 
 |  | 
 |     HRESULT SetBrowseWindowInfo( | 
 |         [in, unique] HLBWINFO *phlbwi); | 
 |  | 
 |     HRESULT GetBrowseWindowInfo( | 
 |         [out] HLBWINFO *phlbwi); | 
 |  | 
 |     HRESULT SetInitialHlink( | 
 |         [in, unique] IMoniker * pimkTarget, | 
 |         [in, unique] LPCWSTR pwzLocation, | 
 |         [in, unique] LPCWSTR pwzFriendlyName); | 
 |  | 
 |     HRESULT OnNavigateHlink( | 
 |         [in] DWORD grfHLNF, | 
 |         [in, unique] IMoniker *pimkTarget, | 
 |         [in, unique] LPCWSTR pwzLocation, | 
 |         [in, unique] LPCWSTR pwzFriendlyName, | 
 |         [out] ULONG *puHLID); | 
 |  | 
 |     HRESULT UpdateHlink( | 
 |         [in] ULONG uHLID, | 
 |         [in, unique] IMoniker *pimkTarget, | 
 |         [in, unique] LPCWSTR pwzLocation, | 
 |         [in, unique] LPCWSTR pwzFriendlyName); | 
 |  | 
 |     HRESULT EnumNavigationStack( | 
 |         [in] DWORD dwReserved, | 
 |         [in] DWORD grfHLFNAMEF, | 
 |         [out] IEnumHLITEM **ppienumhlitem); | 
 |  | 
 |     HRESULT QueryHlink( | 
 |         [in] DWORD grfHLQF, | 
 |         [in] ULONG uHLID); | 
 |  | 
 |     HRESULT GetHlink( | 
 |         [in] ULONG uHLID, | 
 |         [out] IHlink **ppihl); | 
 |  | 
 |     HRESULT SetCurrentHlink( | 
 |         [in] ULONG uHLID); | 
 |  | 
 |     HRESULT Clone( | 
 |         [in, unique] IUnknown *piunkOuter, | 
 |         [in] REFIID riid, | 
 |         [out, iid_is(riid)] IUnknown **ppiunkObj); | 
 |  | 
 |     HRESULT Close( | 
 |         [in] DWORD reserved); | 
 | } | 
 |  | 
 |  | 
 | /***************************************************************************** | 
 |  *    IHlinkTarget interface | 
 |  */ | 
 | [ | 
 |     object, | 
 |     uuid(79EAC9C4-BAF9-11CE-8C82-00AA004BA90B), | 
 |     pointer_default(unique) | 
 | ] | 
 | interface IHlinkTarget : IUnknown | 
 | { | 
 |     typedef [unique] IHlinkTarget *LPHLINKTARGET; | 
 |  | 
 |     HRESULT SetBrowseContext( | 
 |         [in, unique] IHlinkBrowseContext *pihlbc); | 
 |  | 
 |     HRESULT GetBrowseContext( | 
 |         [out] IHlinkBrowseContext **ppihlbc); | 
 |  | 
 |     HRESULT Navigate( | 
 |         [in] DWORD grfHLNF, | 
 |         [in, unique] LPCWSTR pwzJumpLocation); | 
 |  | 
 |     HRESULT GetMoniker( | 
 |         [in,unique]  LPCWSTR pwzLocation, | 
 |         [in] DWORD dwAssign, | 
 |         [out] IMoniker **ppimkLocation); | 
 |  | 
 |     HRESULT GetFriendlyName( | 
 |         [in,unique]  LPCWSTR pwzLocation, | 
 |         [out] LPWSTR *ppwzFriendlyName); | 
 | } | 
 |  | 
 | /***************************************************************************** | 
 |  *    IHlinkFrame interface | 
 |  */ | 
 | [ | 
 |     object, | 
 |     uuid(79eac9c5-baf9-11ce-8c82-00aa004ba90b), | 
 |     pointer_default(unique) | 
 | ] | 
 |  | 
 | interface IHlinkFrame : IUnknown | 
 | { | 
 |     typedef IHlinkFrame *LPHLINKFRAME; | 
 |  | 
 |     HRESULT SetBrowseContext(  | 
 |         [in, unique] IHlinkBrowseContext * pihlbc); | 
 |     HRESULT GetBrowseContext(  | 
 |         [out] IHlinkBrowseContext ** ppihlbc); | 
 |     HRESULT Navigate(  | 
 |         [in] DWORD grfHLNF,  | 
 |         [in, unique] LPBC pbc,  | 
 |         [in, unique] IBindStatusCallback *pibsc,  | 
 |         [in, unique] IHlink *pihlNavigate); | 
 |     HRESULT OnNavigate(  | 
 |         [in] DWORD grfHLNF,  | 
 |         [in, unique] IMoniker *pimkTarget,  | 
 |         [in, unique] LPCWSTR pwzLocation,  | 
 |         [in, unique] LPCWSTR pwzFriendlyName,  | 
 |         [in] DWORD dwreserved); | 
 |     HRESULT UpdateHlink(  | 
 |         [in] ULONG uHLID,  | 
 |         [in, unique] IMoniker *pimkTarget,  | 
 |         [in, unique] LPCWSTR pwzLocation,  | 
 |         [in, unique] LPCWSTR pwzFriendlyName); | 
 | } | 
 |  | 
 | /***************************************************************************** | 
 |  *    IExtensionServices interface | 
 |  */ | 
 | [ | 
 |     object, | 
 |     uuid(79eac9cb-baf9-11ce-8c82-00aa004ba90b), | 
 |     pointer_default(unique) | 
 | ] | 
 |  | 
 | interface IExtensionServices: IUnknown | 
 | { | 
 |     typedef IExtensionServices *LPEXTENSIONSERVICES; | 
 |  | 
 |     HRESULT SetAdditionalHeaders( | 
 |         [in] LPCWSTR pwzAdditionalHeaders); | 
 |  | 
 |     HRESULT SetAuthenticateData( | 
 |         [in] HWND phwnd, | 
 |         [in] LPCWSTR pwzUsername, | 
 |         [in] LPCWSTR pwzPassword); | 
 | } |