在VCL中,TWebBrowser
是Internet Explorer的包裝,特別是IWebBrowser2
接口。
DLCTL_PRAGMA_NO_CACHE
是不是一個國旗,你可以傳遞給Navigate2()
。閱讀文檔:
SHDocVw.TWebBrowser
TWebBrowser包從微軟的殼牌文檔對象和控制庫(SHDOCVW.DLL)允許您創建一個定製的Web瀏覽應用程序或添加互聯網,文件和IWebBrowser2接口網絡瀏覽,文檔查看和數據下載功能。
IWebBrowser2::Navigate2 Method
標誌[in]一個指針VT_I4類型或VT_I2的變體,它指定由BrowserNavConstants枚舉中定義的值的組合。
BrowserNavConstants Enumerated Type
typedef enum BrowserNavConstants {
navOpenInNewWindow = 0x1,
navNoHistory = 0x2,
navNoReadFromCache = 0x4,
navNoWriteToCache = 0x8,
navAllowAutosearch = 0x10,
navBrowserBar = 0x20,
navHyperlink = 0x40,
navEnforceRestricted = 0x80,
navNewWindowsManaged = 0x0100,
navUntrustedForDownload = 0x0200,
navTrustedForActiveX = 0x0400,
navOpenInNewTab = 0x0800,
navOpenInBackgroundTab = 0x1000,
navKeepWordWheelText = 0x2000,
navVirtualTab = 0x4000,
navBlockRedirectsXDomain = 0x8000,
navOpenNewForegroundTab = 0x10000
} BrowserNavConstants;
正如你所看到的,DLCTL_PRAGMA_NO_CACHE
不在名單上。它實際上是一個標誌,您在爲瀏覽器的DISPID_AMBIENT_DLCONTROL
屬性實施處理程序時指定爲輸出值。閱讀MSDN文檔:
WebBrowser Customization | Controlling Download and Execution
WebBrowser控件使您能夠控制它的下載,顯示和執行。要獲得此控制權,您需要實現主機的IDispatch,以便處理DISPID_AMBIENT_DLCONTROL。當WebBrowser控件被實例化時,它會用這個ID調用你的IDispatch :: Invoke。使用按位或運算符將pvarResult設置爲以下標誌的組合,以指示您的首選項。
...
•DLCTL_RESYNCHRONIZE和DLCTL_PRAGMA_NO_CACHE:這些標誌導致高速緩存刷新。使用DLCTL_RESYNCHRONIZE時,服務器將被要求更新狀態。如果服務器指示緩存的信息是最新的,則將使用緩存的文件。使用DLCTL_PRAGMA_NO_CACHE時,無論文件的更新狀態如何,都將從服務器重新下載文件。
...
所以,你必須實現自定義IDispatch
對象並把它掛到IWebBrowser2
爲了正確使用DLCTL_PRAGMA_NO_CACHE
。
或者,你可能會考慮改用TEmbeddedWB
,它處理瀏覽器定製爲你,並具有接受DLCTL...
標誌,包括DLCTL_PRAGMA_NO_CACHE
一個DownloadOptions
屬性。
我可以在導航後調用刷新,但這將是矯枉過正。 – Ampere 2015-02-10 19:58:43
VCL或FireMonkey? – 2015-02-10 20:11:34
這是一個VCL應用程序。 – Ampere 2015-02-10 20:11:58