使用 IE 或 WebBrowse 对象来保存当前网页到本地文件:
问题:执行 ExecWB 时会弹出一个用户确认对话框,MSDN 指出第二个参数可用的取值为:
无论如何取值都无法取消这个对话框,按照 ms 的解释(http://support.microsoft.com/kb/244757/en-us),这个对话框是无法取消的,只能用 URLDownloadToFile 看来替代。但是,URLDownloadToFile API 只能将网页保存为 html 格式的文件,而无法用 MHTML Document 格式来保存。
这里分享另一种使用 CDO.Message 对象来保存为 mht 格式的方法:
#define aveCreateNotExist 1
#define adSaveCreateOverWrite 2
m.cSrc = 'http://www.microsoft.com'
m.cFile = 'c:'
m.cdo = CreateObject( 'CDO.Message' )
m.cdo.CreateMHTMLBody( m.cSrc, 0, '', '' ) && 0 - CdoMHTMLFlags
m.ado = m.cdo.GetStream()
m.cTitle = m.ado.ReadText()
m.cTitle = STREXTRACT( m.cTitle, '<title>', '</title>', 1, 3 )
m.ado.SaveToFile( m.cFile + m.cTitle + '.mht', adSaveCreateOverWrite )
STORE NULL TO m.ado, m.cdo
以上是关键代码,要正确处理所有情况,可能需要先清除网页缓存,判断 title 是否合法,设置保存的字符集等。