' ########################################################################################
' Microsoft Windows
' File: HLink.inc
' Copyright (c) 2011 Jos? Roca
' Portions Copyright (c) Microsoft Corporation.
' All Rights Reserved.
' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
' EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
' MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
' ########################################################################################
#IF NOT %DEF(PBX_HLink_PBI)
#DEFINE PBX_HLink_PBI
%EQUATE `HLINK_INC = 1
'/* header files for imported files */
#INCLUDE ONCE "Legacy/Network/UrlMon.inc"
'//--------------------------------------------------------------------------
'// OLE Hyperlinking Interfaces.
'/****************************************************************************/
'/**** Error codes ****/
'/****************************************************************************/
#IF NOT %DEF(%HLINK_ERRORS_DEFINED)
%EQUATE `HLINK_ERRORS_DEFINED = 1
%EQUATE `HLINK_E_FIRST = %OLE_E_LAST + 1
%EQUATE `HLINK_S_FIRST = %OLE_S_LAST + 1
%EQUATE `HLINK_S_DONTHIDE = %HLINK_S_FIRST
#ENDIF ' //_HLINK_ERRORS_DEFINED
'/****************************************************************************/
'/**** Hyperlink APIs ****/
'/****************************************************************************/
$CFSTR_HYPERLINK = "Hyperlink"
DECLARE FUNCTION HlinkCreateFromMoniker LIB "hlink.dll" ALIAS "HlinkCreateFromMoniker" ( BYVAL pimkTrgt AS IMoniker , BYREF pwzLocation AS WSTRINGZ , BYREF pwzFriendlyName AS WSTRINGZ , BYVAL pihlsite AS IHlinkSite , BYVAL dwSiteData AS QUAD , BYVAL piunkOuter AS IUnknown , BYREF riid AS GUID , BYREF ppvObj AS ANY ) AS LONG
DECLARE FUNCTION HlinkCreateFromString LIB "hlink.dll" ALIAS "HlinkCreateFromString" ( BYREF pwzTarget AS WSTRINGZ
 , BYREF pwzLocation AS WSTRINGZ
 , BYREF pwzFriendlyName AS WSTRINGZ
 , BYVAL pihlsite AS IHlinkSite
 , BYVAL dwSiteData AS DWORD
 , BYVAL piunkOuter AS IUnknown
 , BYREF riid AS GUID
 , BYREF ppvObj AS ANY
 ) AS LONG
DECLARE FUNCTION HlinkCreateFromData LIB "hlink.dll" ALIAS "HlinkCreateFromData" ( BYVAL piDataObj AS IDataObject
 , BYVAL pihlsite AS IHlinkSite
 , BYVAL dwSiteData AS DWORD
 , BYVAL piunkOuter AS IUnknown
 , BYREF riid AS GUID
 , BYREF ppvObj AS ANY
 ) AS LONG
DECLARE FUNCTION HlinkQueryCreateFromData LIB "hlink.dll" ALIAS "HlinkQueryCreateFromData" ( BYVAL piDataObj AS IDataObject
 ) AS LONG
' Not currently supported
'DECLARE FUNCTION HlinkClone LIB "hlink.dll" ALIAS "HlinkClone" ( ' BYVAL pihl AS IHlink
' , BYREF riid AS GUID
' , BYVAL pihlsiteForClone AS IHlinkSite
' , BYVAL dwSiteData AS DWORD
' , BYREF ppvObj AS ANY
' ) AS LONG
DECLARE FUNCTION HlinkCreateBrowseContext LIB "hlink.dll" ALIAS "HlinkCreateBrowseContext" ( BYVAL piunkOuter AS IUnknown
 , BYREF riid AS GUID
 , BYREF ppvObj AS ANY
 ) AS LONG
DECLARE FUNCTION HlinkNavigateToStringReference LIB "hlink.dll" ALIAS "HlinkNavigateToStringReference" ( BYREF pwzTarget AS WSTRINGZ
 , BYREF pwzLocation AS WSTRINGZ
 , BYVAL pihlsite AS IHlinkSite
 , BYVAL dwSiteData AS DWORD
 , BYVAL pihlframe AS IHlinkFrame
 , BYVAL grfHLNF AS DWORD
 , BYVAL pibc AS IBindCtx
 , BYVAL pibsc AS IBindStatusCallback
 , BYVAL pihlbc AS IHlinkBrowseContext
 ) AS LONG
DECLARE FUNCTION HlinkNavigate LIB "hlink.dll" ALIAS "HlinkNavigate" ( BYVAL pihl AS IHlink
 , BYVAL pihlframe AS IHlinkFrame
 , BYVAL grfHLNF AS DWORD
 , BYVAL pbc AS IBindCtx
 , BYVAL pibsc AS IBindStatusCallback
 , BYVAL pihlbc AS IHlinkBrowseContext
 ) AS LONG
DECLARE FUNCTION HlinkOnNavigate LIB "hlink.dll" ALIAS "HlinkOnNavigate" ( BYVAL pihlframe AS IHlinkFrame
 , BYVAL pihlbc AS IHlinkBrowseContext
 , BYVAL grfHLNF AS DWORD
 , BYVAL pimkTarget AS IMoniker
 , BYREF pwzLocation AS WSTRINGZ
 , BYREF pwzFriendlyName AS WSTRINGZ
 , BYREF puHLID AS DWORD
 ) AS LONG
' Not currently supported
'DECLARE FUNCTION HlinkUpdateStackItem LIB "hlink.dll" ALIAS "HlinkUpdateStackItem" ( ' BYVAL pihlframe AS IHlinkFrame
' , BYVAL pihlbc AS IHlinkBrowseContext
' , BYVAL uHLID AS DWORD
' , BYVAL pimkTrgt AS IMoniker
' , BYREF pwzLocation AS WSTRINGZ
' , BYREF pwzFriendlyName AS WSTRINGZ
' ) AS LONG
' Not currently supported
'DECLARE FUNCTION HlinkOnRenameDocument LIB "hlink.dll" ALIAS "HlinkOnRenameDocument" ( ' BYVAL dwReserved AS DWORD
' , BYVAL pihlbc AS IHlinkBrowseContext
' , BYVAL pimkOld AS IMoniker
' , BYVAL pimkNew AS IMoniker
' ) AS LONG
' Not currently supported
'DECLARE FUNCTION HlinkResolveMonikerForData LIB "hlink.dll" ALIAS "HlinkResolveMonikerForData" ( ' BYVAL pimkReference AS IMoniker
' , BYVAL reserved AS DWORD
' , BYVAL pibc AS IBindCtx
' , BYVAL cFmtetc AS DWORD
' , BYREF rgFmtetc AS FORMATETC
' , BYVAL pibsc AS IBindStatusCallback
' , BYVAL pimkBase AS IMoniker
' ) AS LONG
' Not currently supported
'DECLARE FUNCTION HlinkResolveStringForData LIB "hlink.dll" ALIAS "HlinkResolveStringForData" ( ' BYREF pwzReference AS WSTRINGZ
' , BYVAL reserved AS DWORD
' , BYVAL pibc AS IBindCtx
' , BYVAL cFmtetc AS DWORD
' , BYREF rgFmtetc AS FORMATETC
' , BYVAL pibsc AS IBindStatusCallback
' , BYVAL pimkBase AS IMoniker
' ) AS LONG
' Not currently supported
'DECLARE FUNCTION HlinkParseDisplayName LIB "hlink.dll" ALIAS "HlinkParseDisplayName" ( ' BYVAL pibc AS IBindCtx
' , BYREF pwzDisplayName AS WSTRINGZ
' , BYVAL fNoForceAbs AS LONG
' , BYREF pcchEaten AS DWORD
' , BYREF ppimk AS IMoniker
' ) AS LONG
' Not currently supported
'DECLARE FUNCTION HlinkCreateExtensionServices LIB "hlink.dll" ALIAS "HlinkCreateExtensionServices" ( ' BYREF pwzAdditionalHeaders AS WSTRINGZ
' , BYVAL phwnd AS DWORD
' , BYREF pszUsername AS WSTRINGZ
' , BYREF pszPassword AS WSTRINGZ
' , BYVAL piunkOuter AS IUnknown
' , BYREF riid AS GUID
' , BYREF ppvObj AS ANY
' ) AS LONG
' Not currently supported
'DECLARE FUNCTION HlinkPreprocessMoniker LIB "hlink.dll" ALIAS "HlinkPreprocessMoniker" ( ' BYVAL pibc AS IBindCtx
' , BYVAL pimkIn AS IMoniker
' , BYREF ppimkOut AS IMoniker
' ) AS LONG
' Not currently supported
'DECLARE FUNCTION OleSaveToStreamEx LIB "hlink.dll" ALIAS "OleSaveToStreamEx" ( ' BYVAL piunk AS IUnknown
' , BYVAL pistm AS IStream
' , BYVAL fClearDirty AS LONG
' ) AS LONG
' HLSR enum
%EQUATE `HLSR_HOME = 0
%EQUATE `HLSR_SEARCHPAGE = 1
%EQUATE `HLSR_HISTORYFOLDER = 2
DECLARE FUNCTION HlinkSetSpecialReference LIB "hlink.dll" ALIAS "HlinkSetSpecialReference" ( BYVAL uReference AS QUAD , BYREF pwzReference AS WSTRINGZ ) AS LONG
DECLARE FUNCTION HlinkGetSpecialReference LIB "hlink.dll" ALIAS "HlinkGetSpecialReference" ( BYVAL uReference AS QUAD
 , BYREF ppwzReference AS DWORD
 ) AS LONG
' HLSHORTCUTF enum
%EQUATE `HLSHORTCUTF_DEFAULT = 0
%EQUATE `HLSHORTCUTF_DONTACTUALLYCREATE = &H1
%EQUATE `HLSHORTCUTF_USEFILENAMEFROMFRIENDLYNAME = &H2
%EQUATE `HLSHORTCUTF_USEUNIQUEFILENAME = &H4
%EQUATE `HLSHORTCUTF_MAYUSEEXISTINGSHORTCUT = &H8
' Not currently supported
'DECLARE FUNCTION HlinkCreateShortcut LIB "hlink.dll" ALIAS "HlinkCreateShortcut" ( ' BYVAL grfHLSHORTCUTF AS DWORD
' , BYVAL pihl AS IHlink
' , BYREF pwzDir AS WSTRINGZ
' , BYREF pwzFileName AS WSTRINGZ
' , BYREF ppwzShortcutFile AS DWORD
' , BYVAL dwReserved AS DWORD
' ) AS LONG
' Not currently supported
'DECLARE FUNCTION HlinkCreateShortcutFromMoniker LIB "hlink.dll" ALIAS "HlinkCreateShortcutFromMoniker" ( ' BYVAL grfHLSHORTCUTF AS DWORD
' , BYVAL pimkTarget AS IMoniker
' , BYREF pwzLocation AS WSTRINGZ
' , BYREF pwzDir AS WSTRINGZ
' , BYREF pwzFileName AS WSTRINGZ
' , BYREF ppwzShortcutFile AS DWORD
' , BYVAL dwReserved AS DWORD
' ) AS LONG
' Not currently supported
'DECLARE FUNCTION HlinkCreateShortcutFromString LIB "hlink.dll" ALIAS "HlinkCreateShortcutFromString" ( ' BYVAL grfHLSHORTCUTF AS DWORD
' , BYREF pwzTarget AS WSTRINGZ
' , BYREF pwzLocation AS WSTRINGZ
' , BYREF pwzDir AS WSTRINGZ
' , BYREF pwzFileName AS WSTRINGZ
' , BYREF ppwzShortcutFile AS DWORD
' , BYVAL dwReserved AS DWORD
' ) AS LONG
' Not currently supported
'DECLARE FUNCTION HlinkResolveShortcut LIB "hlink.dll" ALIAS "HlinkResolveShortcut" ( ' BYREF pwzShortcutFileName AS WSTRINGZ
' , BYVAL pihlsite AS IHlinkSite
' , BYVAL dwSiteData AS DWORD
' , BYVAL piunkOuter AS IUnknown
' , BYREF riid AS GUID
' , BYREF ppvObj AS ANY
' ) AS LONG
' Not currently supported
'DECLARE FUNCTION HlinkResolveShortcutToMoniker LIB "hlink.dll" ALIAS "HlinkResolveShortcutToMoniker" ( ' BYREF pwzShortcutFileName AS WSTRINGZ
' , BYVAL ppimkTarget AS IMoniker
' , BYREF ppwzLocation AS DWORD
' ) AS LONG
' Not currently supported
'DECLARE FUNCTION HlinkResolveShortcutToString LIB "hlink.dll" ALIAS "HlinkResolveShortcutToString" ( ' BYREF pwzShortcutFileName AS WSTRINGZ
' , BYREF ppwzTarget AS DWORD
' , BYREF ppwzLocation AS DWORD
' ) AS LONG
' Not currently supported
'DECLARE FUNCTION HlinkIsShortcut LIB "hlink.dll" ALIAS "HlinkIsShortcut" ( ' BYREF pwzFileName AS WSTRINGZ
' ) AS LONG
' Not currently supported
'DECLARE FUNCTION HlinkGetValueFromParams LIB "hlink.dll" ALIAS "HlinkGetValueFromParams" ( ' BYREF pwzParams AS WSTRINGZ
' , BYREF pwzName AS WSTRINGZ
' , BYREF ppwzValue AS DWORD
' ) AS LONG
' HLTRANSLATEF enum
%EQUATE `HLTRANSLATEF_DEFAULT = 0
%EQUATE `HLTRANSLATEF_DONTAPPLYDEFAULTPREFIX = &H1
' Not currently supported
'DECLARE FUNCTION HlinkTranslateURL LIB "hlink.dll" ALIAS "HlinkTranslateURL" ( ' BYREF pwzURL AS WSTRINGZ
' , BYVAL grfFlags AS DWORD
' , BYREF ppwzTranslatedURL AS DWORD
' ) AS LONG
'/****************************************************************************/
'/**** Hyperlink interface definitions ****/
'/****************************************************************************/
#IF NOT %DEF(%IHlink_INTERFACE_DEFINED)
%EQUATE `IHlink_INTERFACE_DEFINED = 1
' HLNF enum
%EQUATE `HLNF_INTERNALJUMP = &H1
%EQUATE `HLNF_OPENINNEWWINDOW = &H2
%EQUATE `HLNF_NAVIGATINGBACK = &H4
%EQUATE `HLNF_NAVIGATINGFORWARD = &H8
%EQUATE `HLNF_NAVIGATINGTOSTACKITEM = &H10
%EQUATE `HLNF_CREATENOHISTORY = &H20
' HLINKGETREF enum
%EQUATE `HLINKGETREF_DEFAULT = 0
%EQUATE `HLINKGETREF_ABSOLUTE = 1
%EQUATE `HLINKGETREF_RELATIVE = 2
' HLFNAMEF enum
%EQUATE `HLFNAMEF_DEFAULT = 0
%EQUATE `HLFNAMEF_TRYCACHE = &H1
%EQUATE `HLFNAMEF_TRYPRETTYTARGET = &H2
%EQUATE `HLFNAMEF_TRYFULLTARGET = &H4
%EQUATE `HLFNAMEF_TRYWIN95SHORTCUT = &H8
' HLINKMISC enum
%EQUATE `HLINKMISC_RELATIVE = &H1
' HLINKSETF enum
%EQUATE `HLINKSETF_TARGET = &H1
%EQUATE `HLINKSETF_LOCATION = &H2
' ########################################################################################
' IHlink interface
' IID = 79eac9c3-baf9-11ce-8c82-00aa004ba90b
' Inherited interface = IUnknown
' ########################################################################################
$IID_IHlink = GUID$("{79eac9c3-baf9-11ce-8c82-00aa004ba90b}")
INTERFACE IHlink $IID_IHlink
 INHERIT IUnknown
 ' =====================================================================================
 METHOD SetHlinkSite ( ' VTable offset = 12
 BYVAL pihlSite AS IHlinkSite
 , BYVAL dwSiteData AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetHlinkSite ( ' VTable offset = 16
 BYREF ppihlSite AS IHlinkSite
 , BYREF pdwSiteData AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetMonikerReference ( ' VTable offset = 20
 BYVAL grfHLSETF AS DWORD
 , BYVAL pimkTarget AS IMoniker
 , BYREF pwzLocation AS WSTRINGZ
 ) AS LONG
 ' =====================================================================================
 METHOD GetMonikerReference ( ' VTable offset = 24
 BYVAL dwWhichRef AS DWORD
 , BYREF ppimkTarget AS IMoniker
 , BYREF ppwzLocation AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetStringReference ( ' VTable offset = 28
 BYVAL grfHLSETF AS DWORD
 , BYREF pwzTarget AS WSTRINGZ
 , BYREF pwzLocation AS WSTRINGZ
 ) AS LONG
 ' =====================================================================================
 METHOD GetStringReference ( ' VTable offset = 32
 BYVAL dwWhichRef AS DWORD
 , BYREF ppwzTarget AS DWORD
 , BYREF ppwzLocation AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetFriendlyName ( ' VTable offset = 36
 BYREF pwzFriendlyName AS WSTRINGZ
 ) AS LONG
 ' =====================================================================================
 METHOD GetFriendlyName ( ' VTable offset = 40
 BYVAL grfHLFNAMEF AS DWORD
 , BYREF ppwzFriendlyName AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetTargetFrameName ( ' VTable offset = 44
 BYREF pwzTargetFrameName AS WSTRINGZ
 ) AS LONG
 ' =====================================================================================
 METHOD GetTargetFrameName ( ' VTable offset = 48
 BYREF ppwzTargetFrameName AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetMiscStatus ( ' VTable offset = 52
 BYREF pdwStatus AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD Navigate ( ' VTable offset = 56
 BYVAL grfHLNF AS DWORD
 , BYVAL pibc AS IBindCtx
 , BYVAL pibsc AS IBindStatusCallback
 , BYVAL pihlbc AS IHlinkBrowseContext
 ) AS LONG
 ' =====================================================================================
 METHOD SetAdditionalParams ( ' VTable offset = 60
 BYREF pwzAdditionalParams AS WSTRINGZ
 ) AS LONG
 ' =====================================================================================
 METHOD GetAdditionalParams ( ' VTable offset = 64
 BYREF ppwzAdditionalParams AS DWORD
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IHlink_INTERFACE_DEFINED__ */
#IF NOT %DEF(%IHlinkSite_INTERFACE_DEFINED)
%EQUATE `IHlinkSite_INTERFACE_DEFINED = 1
' HLINKWHICHMK enum
%EQUATE `HLINKWHICHMK_CONTAINER = 1
%EQUATE `HLINKWHICHMK_BASE = 2
' ########################################################################################
' IHlinkSite interface
' IID = 79eac9c3-baf9-11ce-8c82-00aa004ba90b
' Inherited interface = IUnknown
' ########################################################################################
$IID_IHlinkSite = GUID$("{79eac9c2-baf9-11ce-8c82-00aa004ba90b}")
INTERFACE IHlinkSite $IID_IHlinkSite
 INHERIT IUnknown
 ' =====================================================================================
 METHOD QueryService ( ' VTable offset = 12
 BYVAL dwSiteData AS DWORD
 , BYREF guidService AS GUID
 , BYREF riid AS GUID
 , BYREF ppiunk AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD GetMoniker ( ' VTable offset = 16
 BYVAL dwSiteData AS DWORD
 , BYVAL dwAssign AS DWORD
 , BYVAL dwWhich AS DWORD
 , BYREF ppimk AS IMoniker
 ) AS LONG
 ' =====================================================================================
 METHOD ReadyToNavigate ( ' VTable offset = 20
 BYVAL dwSiteData AS DWORD
 , BYVAL dwReserved AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD OnNavigationComplete ( ' VTable offset = 24
 BYVAL dwSiteData AS DWORD
 , BYVAL dwReserved AS DWORD
 , BYVAL hrError AS DWORD
 , BYREF pwzError AS WSTRINGZ
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IHlinkSite_INTERFACE_DEFINED__ */
#IF NOT %DEF(%IHlinkTarget_INTERFACE_DEFINED)
%EQUATE `IHlinkTarget_INTERFACE_DEFINED = 1
' ########################################################################################
' IHlinkTarget interface
' IID = 79eac9c3-baf9-11ce-8c82-00aa004ba90b
' Inherited interface = IUnknown
' ########################################################################################
$IID_IHlinkTarget = GUID$("{79eac9c4-baf9-11ce-8c82-00aa004ba90b}")
INTERFACE IHlinkTarget $IID_IHlinkTarget
 INHERIT IUnknown
 ' =====================================================================================
 METHOD SetBrowseContext ( ' VTable offset = 12
 BYVAL pihlbc AS IHlinkBrowseContext
 ) AS LONG
 ' =====================================================================================
 METHOD GetBrowseContext ( ' VTable offset = 16
 BYREF ppihlbc AS IHlinkBrowseContext
 ) AS LONG
 ' =====================================================================================
 METHOD Navigate ( ' VTable offset = 20
 BYVAL grfHLNF AS DWORD
 , BYREF pwzJumpLocation AS WSTRINGZ
 ) AS LONG
 ' =====================================================================================
 METHOD GetMoniker ( ' VTable offset = 24
 BYREF pwzLocation AS WSTRINGZ
 , BYVAL dwAssign AS DWORD
 , BYREF ppimkLocation AS IMoniker
 ) AS LONG
 ' =====================================================================================
 METHOD GetFriendlyName ( ' VTable offset = 28
 BYREF pwzLocation AS WSTRINGZ
 , BYREF ppwzFriendlyName AS DWORD
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IHlinkTarget_INTERFACE_DEFINED__ */
#IF NOT %DEF(%IHlinkFrame_INTERFACE_DEFINED)
%EQUATE `IHlinkFrame_INTERFACE_DEFINED = 1
' ########################################################################################
' IHlinkFrame interface
' IID = 79eac9c5-baf9-11ce-8c82-00aa004ba90b
' Inherited interface = IUnknown
' ########################################################################################
$IID_IHlinkFrame = GUID$("{79eac9c5-baf9-11ce-8c82-00aa004ba90b}")
INTERFACE IHlinkFrame $IID_IHlinkFrame
 INHERIT IUnknown
 ' =====================================================================================
 METHOD SetBrowseContext ( ' VTable offset = 12
 BYVAL pihlbc AS IHlinkBrowseContext
 ) AS LONG
 ' =====================================================================================
 METHOD GetBrowseContext ( ' VTable offset = 16
 BYREF ppihlbc AS IHlinkBrowseContext
 ) AS LONG
 ' =====================================================================================
 METHOD Navigate ( ' VTable offset = 20
 BYVAL grfHLNF AS DWORD
 , BYVAL pbc AS IBindCtx
 , BYVAL pibsc AS IBindStatusCallback
 , BYVAL pihlNavigate AS IHlink
 ) AS LONG
 ' =====================================================================================
 METHOD OnNavigate ( ' VTable offset = 24
 BYVAL grfHLNF AS DWORD
 , BYVAL pimkTarget AS IMoniker
 , BYREF pwzLocation AS WSTRINGZ
 , BYREF pwzFriendlyName AS WSTRINGZ
 , BYVAL dwReserved AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD UpdateHlink ( ' VTable offset = 28
 BYVAL uHLID AS DWORD
 , BYVAL pimkTarget AS IMoniker
 , BYREF pwzLocation AS WSTRINGZ
 , BYREF pwzFriendlyName AS WSTRINGZ
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IHlinkFrame_INTERFACE_DEFINED__ */
#IF NOT %DEF(%IEnumHLITEM_INTERFACE_DEFINED)
%EQUATE `IEnumHLITEM_INTERFACE_DEFINED = 1
' // Size = 8 bytes
TYPE HLITEM DWORD
 uHLID AS DWORD ' ULONG
 pwzFriendlyName AS WSTRINGZ PTR
END TYPE
' ########################################################################################
' IEnumHLITEM interface
' IID = 79eac9c6-baf9-11ce-8c82-00aa004ba90b
' Inherited interface = IUnknown
' ########################################################################################
$IID_IEnumHLITEM = GUID$("{79eac9c6-baf9-11ce-8c82-00aa004ba90b}")
INTERFACE IEnumHLITEM $IID_IEnumHLITEM
 INHERIT IUnknown
 ' =====================================================================================
 METHOD Next ( ' VTable offset = 12
 BYVAL celt AS DWORD
 , BYREF rgelt AS HLITEM
 , BYREF pceltFetched AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD Skip ( ' VTable offset = 16
 BYVAL celt AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD Reset ( ' VTable offset = 20
 ) AS LONG
 ' =====================================================================================
 METHOD Clone ( ' VTable offset = 24
 BYREF ppienumhlitem AS IEnumHLITEM
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IEnumHLITEM_INTERFACE_DEFINED__ */
#IF NOT %DEF(%IHlinkBrowseContext_INTERFACE_DEFINED)
%EQUATE `IHlinkBrowseContext_INTERFACE_DEFINED = 1
' enum __MIDL_IHlinkBrowseContext_0001
%EQUATE `HLTB_DOCKEDLEFT = 0
%EQUATE `HLTB_DOCKEDTOP = 1
%EQUATE `HLTB_DOCKEDRIGHT = 2
%EQUATE `HLTB_DOCKEDBOTTOM = 3
%EQUATE `HLTB_FLOATING = 4
' // Size = 20 bytes
TYPE HLTBINFO DWORD
 uDockType AS DWORD ' ULONG
 rcTbPos AS RECT ' RECT
END TYPE
' enum __MIDL_IHlinkBrowseContext_0002
%EQUATE `HLBWIF_HASFRAMEWNDINFO = &H1
%EQUATE `HLBWIF_HASDOCWNDINFO = &H2
%EQUATE `HLBWIF_FRAMEWNDMAXIMIZED = &H4
%EQUATE `HLBWIF_DOCWNDMAXIMIZED = &H8
%EQUATE `HLBWIF_HASWEBTOOLBARINFO = &H10
%EQUATE `HLBWIF_WEBTOOLBARHIDDEN = &H20
' // Size = 60 bytes
TYPE HLBWINFO DWORD
 cbSize AS DWORD ' ULONG
 grfHLBWIF AS DWORD
 rcFramePos AS RECT ' RECT
 rcDocPos AS RECT ' RECT
 hltbinfo AS HLTBINFO ' HLTBINFO
END TYPE
' enum __MIDL_IHlinkBrowseContext_0003
%EQUATE `HLID_INVALID = 0
%EQUATE `HLID_PREVIOUS = &Hffffffff
%EQUATE `HLID_NEXT = &Hfffffffe
%EQUATE `HLID_CURRENT = &Hfffffffd
%EQUATE `HLID_STACKBOTTOM = &Hfffffffc
%EQUATE `HLID_STACKTOP = &Hfffffffb
' enum __MIDL_IHlinkBrowseContext_0004
%EQUATE `HLQF_ISVALID = &H1
%EQUATE `HLQF_ISCURRENT = &H2
' ########################################################################################
' IHlinkBrowseContext interface
' IID = 79eac9c7-baf9-11ce-8c82-00aa004ba90b
' Inherited interface = IUnknown
' ########################################################################################
$IID_IHlinkBrowseContext = GUID$("{79eac9c7-baf9-11ce-8c82-00aa004ba90b}")
INTERFACE IHlinkBrowseContext $IID_IHlinkBrowseContext
 INHERIT IUnknown
 ' =====================================================================================
 METHOD Register ( ' VTable offset = 12
 BYVAL reserved AS DWORD
 , BYVAL piunk AS IUnknown
 , BYVAL pimk AS IMoniker
 , BYREF pdwRegister AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetObject ( ' VTable offset = 16
 BYVAL pimk AS IMoniker
 , BYVAL fBindIfRootRegistered AS LONG
 , BYREF ppiunk AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD Revoke ( ' VTable offset = 20
 BYVAL dwRegister AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetBrowseWindowInfo ( ' VTable offset = 24
 BYREF phlbwi AS HLBWINFO
 ) AS LONG
 ' =====================================================================================
 METHOD GetBrowseWindowInfo ( ' VTable offset = 28
 BYREF phlbwi AS HLBWINFO
 ) AS LONG
 ' =====================================================================================
 METHOD SetInitialHlink ( ' VTable offset = 32
 BYVAL pimkTarget AS IMoniker
 , BYREF pwzLocation AS WSTRINGZ
 , BYREF pwzFriendlyName AS WSTRINGZ
 ) AS LONG
 ' =====================================================================================
 METHOD OnNavigateHlink ( ' VTable offset = 36
 BYVAL grfHLNF AS DWORD
 , BYVAL pimkTarget AS IMoniker
 , BYREF pwzLocation AS WSTRINGZ
 , BYREF pwzFriendlyName AS WSTRINGZ
 , BYREF puHLID AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD UpdateHlink ( ' VTable offset = 40
 BYVAL uHLID AS DWORD
 , BYVAL pimkTarget AS IMoniker
 , BYREF pwzLocation AS WSTRINGZ
 , BYREF pwzFriendlyName AS WSTRINGZ
 ) AS LONG
 ' =====================================================================================
 METHOD EnumNavigationStack ( ' VTable offset = 44
 BYVAL dwReserved AS DWORD
 , BYVAL grfHLFNAMEF AS DWORD
 , BYREF ppienumhlitem AS IEnumHLITEM
 ) AS LONG
 ' =====================================================================================
 METHOD QueryHlink ( ' VTable offset = 48
 BYVAL grfHLQF AS DWORD
 , BYVAL uHLID AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetHlink ( ' VTable offset = 52
 BYVAL uHLID AS DWORD
 , BYREF ppihl AS IHlink
 ) AS LONG
 ' =====================================================================================
 METHOD SetCurrentHlink ( ' VTable offset = 56
 BYVAL uHLID AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD Clone ( ' VTable offset = 60
 BYVAL piunkOuter AS IUnknown
 , BYREF riid AS GUID
 , BYREF ppiunkObj AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD Close ( ' VTable offset = 64
 BYVAL reserved AS DWORD
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IHlinkBrowseContext_INTERFACE_DEFINED__ */
#IF NOT %DEF(%IExtensionServices_INTERFACE_DEFINED)
%EQUATE `IExtensionServices_INTERFACE_DEFINED = 1
' ########################################################################################
' IExtensionServices interface
' IID = 79eac9cb-baf9-11ce-8c82-00aa004ba90b
' Inherited interface = IUnknown
' ########################################################################################
$IID_IExtensionServices = GUID$("{79eac9cb-baf9-11ce-8c82-00aa004ba90b}")
INTERFACE IExtensionServices $IID_IExtensionServices
 INHERIT IUnknown
 ' =====================================================================================
 METHOD SetAdditionalHeaders ( ' VTable offset = 12
 BYREF pwzAdditionalHeaders AS WSTRINGZ
 ) AS LONG
 ' =====================================================================================
 METHOD SetAuthenticateData ( ' VTable offset = 16
 BYVAL phwnd AS DWORD
 , BYREF pwzUsername AS WSTRINGZ
 , BYREF pwzPassword AS WSTRINGZ
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IExtensionServices_INTERFACE_DEFINED__ */
#ENDIF
