|  | /* | 
|  | * 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); | 
|  | } |