home *** CD-ROM | disk | FTP | other *** search
-
- {*******************************************************}
- { }
- { Borland Delphi Runtime Library }
- { URL Moniker support interface unit }
- { }
- { Copyright (C) 1997,98 Inprise Corporation }
- { }
- {*******************************************************}
-
- unit UrlMon;
-
- {$WEAKPACKAGEUNIT}
-
- interface
-
- uses Windows, ActiveX;
-
- const
- UseUI: Boolean = True;
-
- BINDVERB_GET = $00000000; // default action
- {$EXTERNALSYM BINDVERB_GET }
- BINDVERB_POST = $00000001; // post verb
- {$EXTERNALSYM BINDVERB_POST }
- BINDVERB_PUT = $00000002; // put verb
- {$EXTERNALSYM BINDVERB_PUT }
- BINDVERB_CUSTOM = $00000003; // custom verb
- {$EXTERNALSYM BINDVERB_CUSTOM }
-
- BINDINFOF_URLENCODESTGMEDDATA = $00000001; // url encode the stgmed data
- {$EXTERNALSYM BINDINFOF_URLENCODESTGMEDDATA }
- BINDINFOF_URLENCODEDEXTRAINFO = $00000002; // url encode the extra info
- {$EXTERNALSYM BINDINFOF_URLENCODEDEXTRAINFO }
-
- // flags that describe the type of transaction that caller wants
- BINDF_ASYNCHRONOUS = $00000001;
- {$EXTERNALSYM BINDF_ASYNCHRONOUS }
- BINDF_ASYNCSTORAGE = $00000002;
- {$EXTERNALSYM BINDF_ASYNCSTORAGE }
- BINDF_NOPROGRESSIVERENDERING = $00000004;
- {$EXTERNALSYM BINDF_NOPROGRESSIVERENDERING }
- BINDF_OFFLINEOPERATION = $00000008;
- {$EXTERNALSYM BINDF_OFFLINEOPERATION }
- BINDF_GETNEWESTVERSION = $00000010;
- {$EXTERNALSYM BINDF_GETNEWESTVERSION }
- BINDF_NOWRITECACHE = $00000020;
- {$EXTERNALSYM BINDF_NOWRITECACHE }
- BINDF_NEEDFILE = $00000040;
- {$EXTERNALSYM BINDF_NEEDFILE }
- BINDF_PULLDATA = $00000080;
- {$EXTERNALSYM BINDF_PULLDATA }
- BINDF_IGNORESECURITYPROBLEM = $00000100;
- {$EXTERNALSYM BINDF_IGNORESECURITYPROBLEM }
- BINDF_RESYNCHRONIZE = $00000200;
- {$EXTERNALSYM BINDF_RESYNCHRONIZE }
- BINDF_HYPERLINK = $00000400;
- {$EXTERNALSYM BINDF_HYPERLINK }
- BINDF_NO_UI = $00000800;
- {$EXTERNALSYM BINDF_NO_UI }
- BINDF_SILENTOPERATION = $00001000;
- {$EXTERNALSYM BINDF_SILENTOPERATION }
- BINDF_PRAGMA_NO_CACHE = $00002000;
- {$EXTERNALSYM BINDF_PRAGMA_NO_CACHE }
- BINDF_FREE_THREADED = $00010000;
- {$EXTERNALSYM BINDF_FREE_THREADED }
- BINDF_DIRECT_READ = $00020000;
- {$EXTERNALSYM BINDF_DIRECT_READ }
- BINDF_FORMS_SUBMIT = $00040000;
- {$EXTERNALSYM BINDF_FORMS_SUBMIT }
- BINDF_GETFROMCACHE_IF_NET_FAIL = $00080000;
- {$EXTERNALSYM BINDF_GETFROMCACHE_IF_NET_FAIL }
- // backward compatibility:
- BINDF_INLINESGETNEWESTVERSION = $10000000; // need to remove from SDK
- {$EXTERNALSYM BINDF_INLINESGETNEWESTVERSION }
- BINDF_INLINESRESYNCHRONIZE = $20000000; // need to remove from SDK
- {$EXTERNALSYM BINDF_INLINESRESYNCHRONIZE }
- BINDF_CONTAINER_NOWRITECACHE = $40000000; // need to remove from SDK
- {$EXTERNALSYM BINDF_CONTAINER_NOWRITECACHE }
- BINDF_DONTUSECACHE = BINDF_GETNEWESTVERSION;
- {$EXTERNALSYM BINDF_DONTUSECACHE }
- BINDF_DONTPUTINCACHE = BINDF_NOWRITECACHE;
- {$EXTERNALSYM BINDF_DONTPUTINCACHE }
- BINDF_NOCOPYDATA = BINDF_PULLDATA;
- {$EXTERNALSYM BINDF_NOCOPYDATA }
-
- // Data notification flags
- BSCF_FIRSTDATANOTIFICATION = $00000001;
- {$EXTERNALSYM BSCF_FIRSTDATANOTIFICATION }
- BSCF_INTERMEDIATEDATANOTIFICATION = $00000002;
- {$EXTERNALSYM BSCF_INTERMEDIATEDATANOTIFICATION }
- BSCF_LASTDATANOTIFICATION = $00000004;
- {$EXTERNALSYM BSCF_LASTDATANOTIFICATION }
-
- BINDSTATUS_FINDINGRESOURCE = 1;
- {$EXTERNALSYM BINDSTATUS_FINDINGRESOURCE }
- BINDSTATUS_CONNECTING = 2;
- {$EXTERNALSYM BINDSTATUS_CONNECTING }
- BINDSTATUS_REDIRECTING = 3;
- {$EXTERNALSYM BINDSTATUS_REDIRECTING }
- BINDSTATUS_BEGINDOWNLOADDATA = 4;
- {$EXTERNALSYM BINDSTATUS_BEGINDOWNLOADDATA }
- BINDSTATUS_DOWNLOADINGDATA = 5;
- {$EXTERNALSYM BINDSTATUS_DOWNLOADINGDATA }
- BINDSTATUS_ENDDOWNLOADDATA = 6;
- {$EXTERNALSYM BINDSTATUS_ENDDOWNLOADDATA }
- BINDSTATUS_BEGINDOWNLOADCOMPONENTS = 7;
- {$EXTERNALSYM BINDSTATUS_BEGINDOWNLOADCOMPONENTS }
- BINDSTATUS_INSTALLINGCOMPONENTS = 8;
- {$EXTERNALSYM BINDSTATUS_INSTALLINGCOMPONENTS }
- BINDSTATUS_ENDDOWNLOADCOMPONENTS = 9;
- {$EXTERNALSYM BINDSTATUS_ENDDOWNLOADCOMPONENTS }
- BINDSTATUS_USINGCACHEDCOPY = 10;
- {$EXTERNALSYM BINDSTATUS_USINGCACHEDCOPY }
- BINDSTATUS_SENDINGREQUEST = 11;
- {$EXTERNALSYM BINDSTATUS_SENDINGREQUEST }
- BINDSTATUS_CLASSIDAVAILABLE = 12;
- {$EXTERNALSYM BINDSTATUS_CLASSIDAVAILABLE }
- BINDSTATUS_MIMETYPEAVAILABLE = 13;
- {$EXTERNALSYM BINDSTATUS_MIMETYPEAVAILABLE }
- BINDSTATUS_CACHEFILENAMEAVAILABLE = 14;
- {$EXTERNALSYM BINDSTATUS_CACHEFILENAMEAVAILABLE }
-
- SZ_URLCONTEXT: PWideChar = 'URL Context';
- {$EXTERNALSYM SZ_URLCONTEXT}
- SZ_ASYNC_CALLEE: PWideChar = 'AsyncCallee';
- {$EXTERNALSYM SZ_ASYNC_CALLEE}
- MKSYS_URLMONIKER = 6;
- {$EXTERNALSYM MKSYS_URLMONIKER }
-
- { URLMON-specific defines for UrlMkSetSessionOption() above }
- URLMON_OPTION_USERAGENT = $10000001;
- {$EXTERNALSYM URLMON_OPTION_USERAGENT }
-
- CF_NULL = 0;
- {$EXTERNALSYM CF_NULL }
- CFSTR_MIME_NULL = 0;
- {$EXTERNALSYM CFSTR_MIME_NULL }
- CFSTR_MIME_TEXT = 'text/plain';
- {$EXTERNALSYM CFSTR_MIME_TEXT }
- CFSTR_MIME_RICHTEXT = 'text/richtext';
- {$EXTERNALSYM CFSTR_MIME_RICHTEXT }
- CFSTR_MIME_X_BITMAP = 'image/x-xbitmap';
- {$EXTERNALSYM CFSTR_MIME_X_BITMAP }
- CFSTR_MIME_POSTSCRIPT = 'application/postscript';
- {$EXTERNALSYM CFSTR_MIME_POSTSCRIPT }
- CFSTR_MIME_AIFF = 'audio/aiff';
- {$EXTERNALSYM CFSTR_MIME_AIFF }
- CFSTR_MIME_BASICAUDIO = 'audio/basic';
- {$EXTERNALSYM CFSTR_MIME_BASICAUDIO }
- CFSTR_MIME_WAV = 'audio/wav';
- {$EXTERNALSYM CFSTR_MIME_WAV }
- CFSTR_MIME_X_WAV = 'audio/x-wav';
- {$EXTERNALSYM CFSTR_MIME_X_WAV }
- CFSTR_MIME_GIF = 'image/gif';
- {$EXTERNALSYM CFSTR_MIME_GIF }
- CFSTR_MIME_PJPEG = 'image/pjpeg';
- {$EXTERNALSYM CFSTR_MIME_PJPEG }
- CFSTR_MIME_JPEG = 'image/jpeg';
- {$EXTERNALSYM CFSTR_MIME_JPEG }
- CFSTR_MIME_TIFF = 'image/tiff';
- {$EXTERNALSYM CFSTR_MIME_TIFF }
- CFSTR_MIME_X_PNG = 'image/x-png';
- {$EXTERNALSYM CFSTR_MIME_X_PNG }
- CFSTR_MIME_BMP = 'image/bmp';
- {$EXTERNALSYM CFSTR_MIME_BMP }
- CFSTR_MIME_X_ART = 'image/x-jg';
- {$EXTERNALSYM CFSTR_MIME_X_ART }
- CFSTR_MIME_AVI = 'video/avi';
- {$EXTERNALSYM CFSTR_MIME_AVI }
- CFSTR_MIME_MPEG = 'video/mpeg';
- {$EXTERNALSYM CFSTR_MIME_MPEG }
- CFSTR_MIME_FRACTALS = 'application/fractals';
- {$EXTERNALSYM CFSTR_MIME_FRACTALS }
- CFSTR_MIME_RAWDATA = 'application/octet-stream';
- {$EXTERNALSYM CFSTR_MIME_RAWDATA }
- CFSTR_MIME_RAWDATASTRM = 'application/octet-stream';
- {$EXTERNALSYM CFSTR_MIME_RAWDATASTRM }
- CFSTR_MIME_PDF = 'application/pdf';
- {$EXTERNALSYM CFSTR_MIME_PDF }
- CFSTR_MIME_X_AIFF = 'audio/x-aiff';
- {$EXTERNALSYM CFSTR_MIME_X_AIFF }
- CFSTR_MIME_X_REALAUDIO = 'audio/x-pn-realaudio';
- {$EXTERNALSYM CFSTR_MIME_X_REALAUDIO }
- CFSTR_MIME_XBM = 'image/xbm';
- {$EXTERNALSYM CFSTR_MIME_XBM }
- CFSTR_MIME_QUICKTIME = 'video/quicktime';
- {$EXTERNALSYM CFSTR_MIME_QUICKTIME }
- CFSTR_MIME_X_MSVIDEO = 'video/x-msvideo';
- {$EXTERNALSYM CFSTR_MIME_X_MSVIDEO }
- CFSTR_MIME_X_SGI_MOVIE = 'video/x-sgi-movie';
- {$EXTERNALSYM CFSTR_MIME_X_SGI_MOVIE }
- CFSTR_MIME_HTML = 'text/html';
- {$EXTERNALSYM CFSTR_MIME_HTML }
-
- { MessageId: MK_S_ASYNCHRONOUS }
- { MessageText: Operation is successful, but will complete asynchronously. }
- MK_S_ASYNCHRONOUS = $000401E8;
- {$EXTERNALSYM MK_S_ASYNCHRONOUS }
- S_ASYNCHRONOUS = MK_S_ASYNCHRONOUS;
- {$EXTERNALSYM S_ASYNCHRONOUS }
- E_PENDING = $8000000A;
- {$EXTERNALSYM E_PENDING }
-
- { WinINet and protocol specific errors are mapped to one of the following }
- { error which are returned in IBSC::OnStopBinding }
- INET_E_INVALID_URL : HResult = $800C0002;
- {$EXTERNALSYM INET_E_INVALID_URL }
- INET_E_NO_SESSION : HResult = $800C0003;
- {$EXTERNALSYM INET_E_NO_SESSION }
- INET_E_CANNOT_CONNECT : HResult = $800C0004;
- {$EXTERNALSYM INET_E_CANNOT_CONNECT }
- INET_E_RESOURCE_NOT_FOUND : HResult = $800C0005;
- {$EXTERNALSYM INET_E_RESOURCE_NOT_FOUND }
- INET_E_OBJECT_NOT_FOUND : HResult = $800C0006;
- {$EXTERNALSYM INET_E_OBJECT_NOT_FOUND }
- INET_E_DATA_NOT_AVAILABLE : HResult = $800C0007;
- {$EXTERNALSYM INET_E_DATA_NOT_AVAILABLE }
- INET_E_DOWNLOAD_FAILURE : HResult = $800C0008;
- {$EXTERNALSYM INET_E_DOWNLOAD_FAILURE }
- INET_E_AUTHENTICATION_REQUIRED : HResult = $800C0009;
- {$EXTERNALSYM INET_E_AUTHENTICATION_REQUIRED }
- INET_E_NO_VALID_MEDIA : HResult = $800C000A;
- {$EXTERNALSYM INET_E_NO_VALID_MEDIA }
- INET_E_CONNECTION_TIMEOUT : HResult = $800C000B;
- {$EXTERNALSYM INET_E_CONNECTION_TIMEOUT }
- INET_E_INVALID_REQUEST : HResult = $800C000C;
- {$EXTERNALSYM INET_E_INVALID_REQUEST }
- INET_E_UNKNOWN_PROTOCOL : HResult = $800C000D;
- {$EXTERNALSYM INET_E_UNKNOWN_PROTOCOL }
- INET_E_SECURITY_PROBLEM : HResult = $800C000E;
- {$EXTERNALSYM INET_E_SECURITY_PROBLEM }
- INET_E_CANNOT_LOAD_DATA : HResult = $800C000F;
- {$EXTERNALSYM INET_E_CANNOT_LOAD_DATA }
- INET_E_CANNOT_INSTANTIATE_OBJECT : HResult = $800C0010;
- {$EXTERNALSYM INET_E_CANNOT_INSTANTIATE_OBJECT }
- INET_E_ERROR_FIRST : HResult = $800C0002;
- {$EXTERNALSYM INET_E_ERROR_FIRST }
- INET_E_ERROR_LAST : HResult = $800C0010;
- {$EXTERNALSYM INET_E_ERROR_LAST }
- // (INET_E_CANNOT_INSTANTIATE_OBJECT)
-
- { These are for backwards compatibility with previous URLMON versions }
- { Flags for the UrlDownloadToCacheFile }
- URLOSTRM_USECACHEDCOPY_ONLY = $1; // Only get from cache
- {$EXTERNALSYM URLOSTRM_USECACHEDCOPY_ONLY }
- URLOSTRM_USECACHEDCOPY = $2; // Get from cache if available else download
- {$EXTERNALSYM URLOSTRM_USECACHEDCOPY }
- URLOSTRM_GETNEWESTVERSION = $3; // Get new version only. But put it in cache too
- {$EXTERNALSYM URLOSTRM_GETNEWESTVERSION }
-
- // GUIDs for interfaces declared in this unit
- IID_IPersistMoniker: TGUID = (
- D1:$79eac9c9;D2:$baf9;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
- IID_IBindProtocol: TGUID = (
- D1:$79eac9cd;D2:$baf9;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
- IID_IBinding: TGUID = (
- D1:$79eac9c0;D2:$baf9;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
- IID_IBindStatusCallback: TGUID = (
- D1:$79eac9c1;D2:$baf9;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
- IID_IAuthenticate: TGUID = (
- D1:$79eac9d0;D2:$baf9;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
- IID_HttpNegotiate: TGUID = (
- D1:$79eac9d2;D2:$baf9;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
- IID_IWindowForBindingUI: TGUID = (
- D1:$79eac9d5;D2:$bafa;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
- IID_ICodeInstall: TGUID = (
- D1:$79eac9d1;D2:$baf9;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
- IID_IWinInetInfo: TGUID = (
- D1:$79eac9d6;D2:$bafa;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
- IID_IHttpSecurity: TGUID = (
- D1:$79eac9d7;D2:$bafa;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
- IID_IWinInetHttpInfo: TGUID = (
- D1:$79eac9d8;D2:$bafa;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
- IID_IBindHost: TGUID = (
- D1:$fc4801a1;D2:$2ba9;D3:$11cf;D4:($a2,$29,$00,$aa,$00,$3d,$73,$52));
-
- type
- PBindInfo = ^TBindInfo;
- TBindInfo = packed record
- cbSize: Longint;
- szExtraInfo: PWideChar; // e.g. string added to the URL string [range byte]
- stgmedData: TStgMedium; // e.g. put or post data
- grfBindInfoF: DWORD; // e.g. how meddata should be treaded
- dwBindVerb: DWORD; // e.g. put, post, ...
- szCustomVerb: PWideChar; // e.g. custom verb
- cbstgmedData: Longint; // size of data in stgmedData
- end;
-
- PRemBindInfo = ^TRemBindInfo;
- TRemBindInfo = packed record
- cbSize: Cardinal;
- szExtraInfo: PWideChar;
- grfBindInfoF: DWORD;
- dwBindVerb: DWORD;
- szCustomVerb: PWideChar;
- cbstgmedData: DWORD;
- end;
-
- PRemFormatEtc = ^TRemFormatEtc;
- TRemFormatEtc = packed record
- cfFormat: DWORD;
- ptd: DWORD;
- dwAspect: DWORD;
- lindex: Longint;
- tymed: DWORD;
- end;
-
- PCIP_Status = ^TCip_Status;
- TCIP_Status = (CIP_DISK_FULL, CIP_ACCESS_DENIED, CIP_NEWER_VERSION_EXISTS,
- CIP_OLDER_VERSION_EXISTS, CIP_NAME_CONFLICT,
- CIP_TRUST_VERIFICATION_COMPONENT_MISSING,
- CIP_EXE_SELF_REGISTERATION_TIMEOUT, CIP_UNSAFE_TO_ABORT, CIP_NEED_REBOOT);
-
- IPersistMoniker = interface
- ['{79eac9c9-baf9-11ce-8c82-00aa004ba90b}']
- function GetClassID(out pClassID: TCLSID): HRESULT; stdcall;
- function IsDirty: HRESULT; stdcall;
- function Load(fFullyAvailable: BOOL; pimkName: IMoniker; pibc: IBindCtx;
- grfMode: DWORD): HResult; stdcall;
- function Save(pimkName: IMoniker; pibc: IBindCtx; fRemember: BOOL): HResult; stdcall;
- function SaveCompleted(pimkName: IMoniker; pibc: IBindCtx): HRESULT; stdcall;
- function GetCurMoniker(out ppimkName: IMoniker): HRESULT; stdcall;
- end;
- {$EXTERNALSYM IPersistMoniker}
-
- IBinding = interface
- ['{79eac9c0-baf9-11ce-8c82-00aa004ba90b}']
- function Abort: HResult; stdcall;
- function Suspend: HResult; stdcall;
- function Resume: HResult; stdcall;
- function SetPriority(nPriority: Longint): HResult; stdcall;
- function GetPriority(out nPriority: Longint): HResult; stdcall;
- function GetBindResult(out clsidProtocol: TGUID; out dwResult: Longint;
- out szResult: PWideChar; var dwReserved: Longint): HResult; stdcall;
- end;
- {$EXTERNALSYM IBinding}
-
- IBindProtocol = interface
- ['{79eac9cd-baf9-11ce-8c82-00aa004ba90b}']
- function CreateBinding(szUrl: PWideChar; pbc: IBindCtx;
- out ppb: IBinding): HResult; stdcall;
- end;
- {$EXTERNALSYM IBindProtocol}
-
- IBindStatusCallback = interface
- ['{79eac9c1-baf9-11ce-8c82-00aa004ba90b}']
- function OnStartBinding(dwReserved: Longint; pib: IBinding): HResult;
- stdcall;
- function GetPriority(out pnPriority: Longint): HResult; stdcall;
- function OnLowResource(reserved: Longint): HResult; stdcall;
- function OnProgress(ulProgress: Longint; ulProgressMax: Longint;
- ulStatusCode: Longint; szStatusText: PWideChar): HResult; stdcall;
- function OnStopBinding( hRes: HResult; szError: PWideChar ): HResult;
- stdcall;
- function GetBindInfo(out grfBINDF: Longint; var pbindinfo: TBindInfo):
- HResult; stdcall;
- function OnDataAvailable(grfBSCF: Longint; dwSize: Longint;
- var pformatetc: TFormatEtc; var pstgmed: TSTGMEDIUM): HResult; stdcall;
- function OnObjectAvailable(const iid: TGUID; const punk: IUnknown): HResult;
- stdcall;
- end;
- {$EXTERNALSYM IBindStatusCallback}
-
- IAuthenticate = interface
- ['{79eac9d0-baf9-11ce-8c82-00aa004ba90b}']
- function Authenticate(var phwnd: HWND; pszUserName,
- pszPassword: PWideChar): HRESULT; stdcall;
- end;
- {$EXTERNALSYM IAuthenticate}
-
- IHttpNegotiate = interface
- ['{79eac9d2-baf9-11ce-8c82-00aa004ba90b}']
- function BeginningTransaction(szURL, szHeaders: PWideChar;
- dwReserved: DWORD; out pszAdditionalHeaders: PWideChar): HRESULT; stdcall;
- function OnResponse(dwResponseCode: DWORD; szResponseHeaders,
- szRequestHeaders: PWideChar; out pszAdditionalRequestHeaders: PWideChar):
- HResult; stdcall;
- end;
- {$EXTERNALSYM IHttpNegotiate}
-
- IWindowForBindingUI = interface
- ['{79eac9d5-bafa-11ce-8c82-00aa004ba90b}']
- function GetWindow(const guidReason: TGUID; out wnd: HWND): HResult; stdcall;
- end;
- {$EXTERNALSYM IWindowForBindingUI}
-
- ICodeInstall = interface(IWindowForBindingUI)
- ['{79eac9d1-baf9-11ce-8c82-00aa004ba90b}']
- function OnCodeInstallProblem(ulStatusCode: Cardinal; szDestination,
- szSource: PWideChar; dwReserved: DWORD): HResult; stdcall;
- end;
- {$EXTERNALSYM ICodeInstall}
-
- IWinInetInfo = interface
- ['{79eac9d6-bafa-11ce-8c82-00aa004ba90b}']
- function QueryOption(dwOption: DWORD; Buffer: Pointer; var pcbBuf: DWORD): HResult; stdcall;
- end;
- {$EXTERNALSYM IWinInetInfo}
-
- IHttpSecurity = interface(IWindowForBindingUI)
- ['{79eac9d7-bafa-11ce-8c82-00aa004ba90b}']
- function OnSecurityProblem(dwProblem: DWORD): HRESULT; stdcall;
- end;
- {$EXTERNALSYM IHttpSecurity}
-
- IWinInetHttpInfo = interface(IWinInetInfo)
- ['{79eac9d8-bafa-11ce-8c82-00aa004ba90b}']
- function QueryInfo(dwOption: DWORD; pBuffer: Pointer; var pcbBuf, pdwFlags,
- pdwReserved: DWORD): HResult; stdcall;
- end;
- {$EXTERNALSYM IWinInetHttpInfo}
-
- IBindHost = interface
- ['{fc4801a1-2ba9-11cf-a229-00aa003d7352}']
- function CreateMoniker(szName: PWideChar; pBC: IBindCtx; out ppmk: IMoniker;
- dwReserved: DWORD): HResult; stdcall;
- function MonikerBindToStorage(pMk: IMoniker; pBC: IBindCtx;
- pBSC: IBindStatusCallback; const riid: TIID; out ppvObj): HResult; stdcall;
- function RemoteMonikerBindToStorage(pMk: IMoniker; pBC: IBindCtx;
- pBSC: IBindStatusCallback; const riid: TIID; out ppvObj: IUnknown): HResult; stdcall;
- function MonikerBindToObject(pMk: IMoniker; pBC: IBindCtx;
- pBSC: IBindStatusCallback; const riid: TIID; out ppvObj): HResult; stdcall;
- function RemoteMonikerBindToObject(pMk: IMoniker; pBC: IBindCtx;
- pBSC: IBindStatusCallback; const riid: TIID; out ppvObj: IUnknown): HResult; stdcall;
- end;
- {$EXTERNALSYM IBindHost}
-
- const
- SOFTDIST_FLAG_USAGE_EMAIL = $00000001;
- {$EXTERNALSYM SOFTDIST_FLAG_USAGE_EMAIL }
- SOFTDIST_FLAG_USAGE_PRECACHE = $00000002;
- {$EXTERNALSYM SOFTDIST_FLAG_USAGE_PRECACHE }
- SOFTDIST_FLAG_USAGE_AUTOINSTALL = $00000004;
- {$EXTERNALSYM SOFTDIST_FLAG_USAGE_AUTOINSTALL }
- SOFTDIST_FLAG_DELETE_SUBSCRIPTION = $00000008;
- {$EXTERNALSYM SOFTDIST_FLAG_DELETE_SUBSCRIPTION }
-
- SOFTDIST_ADSTATE_NONE = $00000000;
- {$EXTERNALSYM SOFTDIST_ADSTATE_NONE }
- SOFTDIST_ADSTATE_AVAILABLE = $00000001;
- {$EXTERNALSYM SOFTDIST_ADSTATE_AVAILABLE }
- SOFTDIST_ADSTATE_DOWNLOADED = $00000002;
- {$EXTERNALSYM SOFTDIST_ADSTATE_DOWNLOADED }
- SOFTDIST_ADSTATE_INSTALLED = $00000003;
- {$EXTERNALSYM SOFTDIST_ADSTATE_INSTALLED }
-
- type
- _tagCODEBASEHOLD = packed record
- cbSize: ULONG;
- szDistUnit: PWideChar;
- szCodeBase: PWideChar;
- dwVersionMS: DWORD;
- dwVersionLS: DWORD;
- dwStyle: DWORD;
- end;
- PCodeBaseHold = ^TCodeBaseHold;
- TCodeBaseHold = _tagCODEBASEHOLD;
-
- _tagSOFTDISTINFO = packed record
- cbSize: ULONG;
- dwFlags: DWORD;
- dwAdState: DWORD;
- szTitle: PWideChar;
- szAbstract: PWideChar;
- szHREF: PWideChar;
- dwInstalledVersionMS: DWORD;
- dwInstalledVersionLS: DWORD;
- dwUpdateVersionMS: DWORD;
- dwUpdateVersionLS: DWORD;
- dwAdvertisedVersionMS: DWORD;
- dwAdvertisedVersionLS: DWORD;
- dwReserved: DWORD;
- end;
- PSoftDistInfo = ^TSoftDistInfo;
- TSoftDistInfo = _tagSOFTDISTINFO;
-
- function CreateURLMoniker(pMkCtx: IMoniker; szURL: PWideChar;
- out ppmk: IMoniker): HResult; stdcall;
- {$EXTERNALSYM CreateURLMoniker}
- function GetClassURL(szURL: PWideChar; const pClsID: TCLSID): HResult; stdcall;
- {$EXTERNALSYM GetClassURL}
- function CreateAsyncBindCtx(reserved: DWORD; pBSCb: IBindStatusCallback;
- pEFetc: IEnumFORMATETC; out ppBC: IBindCtx): HResult;
- {$EXTERNALSYM CreateAsyncBindCtx}
- function MkParseDisplayNameEx(pbc: IBindCtx; szDisplayName: PWideChar;
- var pchEaten: Cardinal; out ppmk: IMoniker): HResult; stdcall;
- {$EXTERNALSYM MkParseDisplayNameEx}
- function RegisterBindStatusCallback(pBC: IBindCtx; pBSCb: IBindStatusCallback;
- out ppBSCBPrev: IBindStatusCallback; dwReserved: DWORD): HResult; stdcall;
- {$EXTERNALSYM RegisterBindStatusCallback}
- function RevokeBindStatusCallback(pBC: IBindCtx; pBSCb: IBindStatusCallback): HResult; stdcall;
- {$EXTERNALSYM RevokeBindStatusCallback}
- function GetClassFileOrMime(pBC: IBindCtx; szFilename: PWideChar; pBuffer: Pointer;
- cbSize: DWORD; szMime: PWideChar; dwReserved: DWORD; out pclsid: TCLSID): HResult; stdcall;
- {$EXTERNALSYM GetClassFileOrMime}
- function IsValidURL(pBC: IBindCtx; szURL: PWideChar; dwReserved: DWORD): HResult; stdcall;
- {$EXTERNALSYM IsValidURL}
- function CoGetClassObjectFromURL(const rCLASSID: TCLSID; szCODE: PWideChar;
- dwFileVersionMS: DWORD; dwFileVersionLS: DWORD; szTYPE: PWideChar;
- pBindCtx: IBindCtx; dwClsContext: DWORD; pvReserved: Pointer; const riid: TIID;
- out ppv): HResult; stdcall;
- {$EXTERNALSYM CoGetClassObjectFromURL}
-
- { helper apis }
- function IsAsyncMoniker(pmk: IMoniker): HResult; stdcall;
- {$EXTERNALSYM IsAsyncMoniker}
- function CreateURLBinding(lpszUrl: PWideChar; pbc: IBindCtx;
- out ppBdg: IBinding): HResult; stdcall;
- {$EXTERNALSYM CreateURLBinding}
-
- function RegisterMediaTypesW(ctypes: Cardinal; rgszTypes: PWideChar;
- const rgcfTypes: TClipFormat): HResult; stdcall;
- {$EXTERNALSYM RegisterMediaTypesW}
- function RegisterMediaTypes(ctypes: Cardinal; rgszTypes: PChar;
- const rgcfTypes: TClipFormat): HResult; stdcall;
- {$EXTERNALSYM RegisterMediaTypes}
- function FindMediaType(rgszTypes: PChar; rgcfTypes: TClipFormat): HResult; stdcall;
- {$EXTERNALSYM FindMediaType}
- function CreateFormatEnumerator(cfmtetc: Cardinal; const rgfmtetc: TFormatEtc;
- out ppenumfmtetc: IEnumFormatEtc): HResult; stdcall;
- {$EXTERNALSYM CreateFormatEnumerator}
- function RegisterFormatEnumerator(pBC: IBindCtx; pEFetc: IEnumFormatEtc;
- reserved: DWORD): HResult; stdcall;
- {$EXTERNALSYM RegisterFormatEnumerator}
- function RevokeFormatEnumerator(pBC: IBindCtx; pEFetc: IEnumFormatEtc): HResult; stdcall;
- {$EXTERNALSYM RevokeFormatEnumerator}
- function RegisterMediaTypeClass(pBC: IBindCtx; ctypes: Cardinal;
- rgszTypes: PChar; const rgclsID: TCLSID; reserved: DWORD): HResult; stdcall;
- {$EXTERNALSYM RegisterMediaTypeClass}
- function FindMediaTypeClass(pBC: IBindCtx; szType: PChar; out pclsID: TCLSID;
- reserved: DWORD): HResult; stdcall;
- {$EXTERNALSYM FindMediaTypeClass}
- function UrlMkSetSessionOption(dwOption: DWORD; pBuffer: Pointer;
- dwBufferLength: DWORD; dwReserved: DWORD): HResult; stdcall;
- {$EXTERNALSYM UrlMkSetSessionOption}
-
- function HlinkSimpleNavigateToString(szTarget, szLocation,
- szTargetFrameName: PWideChar; pUnk: IUnknown; pbc: IBindCtx;
- pBSCb: IBindStatusCallback; grfHLNF, dwReserved: DWORD): HResult; stdcall;
- {$EXTERNALSYM HlinkSimpleNavigateToString}
- function HlinkSimpleNavigateToMoniker(pmkTarget: IMoniker; szLocation,
- szTargetFrameName: PWideChar; pUnk: IUnknown; pbc: IBindCtx;
- pBSCb: IBindStatusCallback; grfHLNF, dwReserved: DWORD): HResult; stdcall;
- {$EXTERNALSYM HlinkSimpleNavigateToMoniker}
-
- function URLOpenStreamA(p1: IUnknown; p2: PAnsiChar; p3: DWORD;
- p4: IBindStatusCallback): HResult; stdcall;
- {$EXTERNALSYM URLOpenStreamA}
- function URLOpenStreamW(p1: IUnknown; p2: PWideChar; p3: DWORD;
- p4: IBindStatusCallback): HResult; stdcall;
- {$EXTERNALSYM URLOpenStreamW}
- function URLOpenStream(p1: IUnknown; p2: PChar; p3: DWORD;
- p4: IBindStatusCallback): HResult; stdcall;
- {$EXTERNALSYM URLOpenStream}
-
- function URLOpenPullStreamA(p1: IUnknown; p2: PAnsiChar; p3: DWORD;
- p4: IBindStatusCallback): HResult; stdcall;
- {$EXTERNALSYM URLOpenPullStreamA}
- function URLOpenPullStreamW(p1: IUnknown; p2: PWideChar; p3: DWORD;
- p4: IBindStatusCallback): HResult; stdcall;
- {$EXTERNALSYM URLOpenPullStreamW}
- function URLOpenPullStream(p1: IUnknown; p2: PChar; p3: DWORD;
- p4: IBindStatusCallback): HResult; stdcall;
- {$EXTERNALSYM URLOpenPullStream}
-
-
- function URLDownloadToFileA(p1: IUnknown; p2: PAnsiChar; p3: PAnsiChar; p4: DWORD;
- p5: IBindStatusCallback): HResult; stdcall;
- {$EXTERNALSYM URLDownloadToFileA}
- function URLDownloadToFileW(p1: IUnknown; p2: PWideChar; p3: PWideChar; p4: DWORD;
- p5: IBindStatusCallback): HResult; stdcall;
- {$EXTERNALSYM URLDownloadToFileW}
- function URLDownloadToFile(p1: IUnknown; p2: PChar; p3: PChar; p4: DWORD;
- p5: IBindStatusCallback): HResult; stdcall;
- {$EXTERNALSYM URLDownloadToFile}
-
- function URLDownloadToCacheFileA(p1: IUnknown; p2: PAnsiChar; p3: PAnsiChar;
- p4: DWORD; p5: DWORD; p6: IBindStatusCallback): HResult; stdcall;
- {$EXTERNALSYM URLDownloadToCacheFileA}
- function URLDownloadToCacheFileW(p1: IUnknown; p2: PWideChar; p3: PWideChar;
- p4: DWORD; p5: DWORD; p6: IBindStatusCallback): HResult; stdcall;
- {$EXTERNALSYM URLDownloadToCacheFileW}
- function URLDownloadToCacheFile(p1: IUnknown; p2: PChar; p3: PChar;
- p4: DWORD; p5: DWORD; p6: IBindStatusCallback): HResult; stdcall;
- {$EXTERNALSYM URLDownloadToCacheFile}
-
- function URLOpenBlockingStreamA(p1: IUnknown; p2: PAnsiChar; out p3: IStream;
- p4: DWORD; p5: IBindStatusCallback): HResult; stdcall;
- {$EXTERNALSYM URLOpenBlockingStreamA}
- function URLOpenBlockingStreamW(p1: IUnknown; p2: PWideChar; out p3: IStream;
- p4: DWORD; p5: IBindStatusCallback): HResult; stdcall;
- {$EXTERNALSYM URLOpenBlockingStreamW}
- function URLOpenBlockingStream(p1: IUnknown; p2: PChar; out p3: IStream;
- {$EXTERNALSYM URLOpenBlockingStream}
- p4: DWORD; p5: IBindStatusCallback): HResult; stdcall;
-
- function HlinkGoBack(pUnk: IUnknown): HResult; stdcall;
- {$EXTERNALSYM HlinkGoBack}
- function HlinkGoForward(pUnk: IUnknown): HResult; stdcall;
- {$EXTERNALSYM HlinkGoForward}
- function HlinkNavigateString(pUnk: IUnknown; szTarget: PWideChar): HResult; stdcall;
- {$EXTERNALSYM HlinkNavigateString}
- function HlinkNavigateMoniker(pUnk: IUnknown; pmkTarget: IMoniker): HResult; stdcall;
- {$EXTERNALSYM HlinkNavigateMoniker}
-
- implementation
-
- const
- UrlMonLib = 'URLMON.DLL';
-
- function CoGetClassObjectFromURL; external UrlMonLib name 'CoGetClassObjectFromURL';
- function CreateAsyncBindCtx; external UrlMonLib name 'CreateAsyncBindCtx';
- function CreateFormatEnumerator; external UrlMonLib name 'CreateFormatEnumerator';
- function CreateURLBinding; external UrlMonLib name 'CreateURLBinding';
- function CreateURLMoniker; external UrlMonLib name 'CreateURLMoniker';
- function FindMediaType; external UrlMonLib name 'FindMediaType';
- function FindMediaTypeClass; external UrlMonLib name 'FindMediaTypeClass';
- function GetClassFileOrMime; external UrlMonLib name 'GetClassFileOrMime';
- function GetClassURL; external UrlMonLib name 'GetClassURL';
- function HlinkGoBack; external UrlMonLib name 'HlinkGoBack';
- function HlinkGoForward; external UrlMonLib name 'HlinkGoForward';
- function HlinkNavigateMoniker; external UrlMonLib name 'HlinkNavigateMoniker';
- function HlinkNavigateString; external UrlMonLib name 'HlinkNavigateString';
- function HlinkSimpleNavigateToMoniker; external UrlMonLib name 'HlinkSimpleNavigateToMoniker';
- function HlinkSimpleNavigateToString; external UrlMonLib name 'HlinkSimpleNavigateToString';
- function IsAsyncMoniker; external UrlMonLib name 'IsAsyncMoniker';
- function IsValidURL; external UrlMonLib name 'IsValidURL';
- function MkParseDisplayNameEx; external UrlMonLib name 'MkParseDisplayNameEx';
- function RegisterBindStatusCallback; external UrlMonLib name 'RegisterBindStatusCallback';
- function RegisterFormatEnumerator; external UrlMonLib name 'RegisterFormatEnumerator';
- function RegisterMediaTypeClass; external UrlMonLib name 'RegisterMediaTypeClass';
- function RegisterMediaTypes; external UrlMonLib name 'RegisterMediaTypes';
- function RegisterMediaTypesW; external UrlMonLib name 'RegisterMediaTypesW';
- function RevokeBindStatusCallback; external UrlMonLib name 'RevokeBindStatusCallback';
- function RevokeFormatEnumerator; external UrlMonLib name 'RevokeFormatEnumerator';
- function URLDownloadToCacheFileA; external UrlMonLib name 'URLDownloadToCacheFileA';
- function URLDownloadToCacheFileW; external UrlMonLib name 'URLDownloadToCacheFileW';
- function URLDownloadToCacheFile; external UrlMonLib name 'URLDownloadToCacheFileA';
- function URLDownloadToFileA; external UrlMonLib name 'URLDownloadToFileA';
- function URLDownloadToFileW; external UrlMonLib name 'URLDownloadToFileW';
- function URLDownloadToFile; external UrlMonLib name 'URLDownloadToFileA';
- function UrlMkSetSessionOption; external UrlMonLib name 'UrlMkSetSessionOption';
- function URLOpenBlockingStreamA; external UrlMonLib name 'URLOpenBlockingStreamA';
- function URLOpenBlockingStreamW; external UrlMonLib name 'URLOpenBlockingStreamW';
- function URLOpenBlockingStream; external UrlMonLib name 'URLOpenBlockingStreamA';
- function URLOpenPullStreamA; external UrlMonLib name 'URLOpenPullStreamA';
- function URLOpenPullStreamW; external UrlMonLib name 'URLOpenPullStreamW';
- function URLOpenPullStream; external UrlMonLib name 'URLOpenPullStreamA';
- function URLOpenStreamA; external UrlMonLib name 'URLOpenStreamA';
- function URLOpenStreamW; external UrlMonLib name 'URLOpenStreamW';
- function URLOpenStream; external UrlMonLib name 'URLOpenStreamA';
-
- end.
-