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