lpIDList = SHBrowseForFolder(tBrowseInfo)
If (lpIDList) Then
sBuffer = Space(MAX_PATH)
SHGetPathFromIDList lpIDList, sBuffer
sBuffer = Left(sBuffer, InStr(sBuffer, vbNullChar) - 1)
SelectedDir = sBuffer
End If
End Function
Private Sub CommandStart_Click() '开始保存选定内容
If TextName.Text = "" Then
TI = MsgBox("错误!必须指定保存文件的名字。", vbOKOnly, "文件名为空")
Else
TStart = "<HTML>" + vbCrLf + "<head>" + vbCrLf + "<title></title>" + vbCrLf + "</head>" + vbCrLf + "<body>" 'HTML网页文件的前半部分
TSEnd = "</body>" + vbCrLf + "</HTML>" 'HTML网页文件的后半部分
TSResult = TStart + SelectedHTML + TSEnd '将选定内容的HTML代码加入中间,构成最终的网页文件的HTML代码
'下面将HTML代码写入最终的HTML文件中
Open TextLocation.Text + "\" + TextName.Text + ".htm" For Output As #1
Print #1, TSResult
Close #1
TI = MsgBox("选定网页内容保存成功。", vbOKOnly, "提示")
Unload Me
End If
End Sub
Private Sub Form_Load()
TextLocation.Text = App.Path '启动时设置默认的保存位置为DLL所在文件夹
End Sub
(5)选择“File-Save Project”,以系统默认的名字保存整个工程(包括窗体、模块、类);然后选择“File-Make SaveHTML.DLL”,生成最终的ActiveX DLL文件。
(6)注册刚刚生成的ActiveX DLL。在系统文件夹Windows\System32中找到文件regsvr32.exe,将SaveHTML.DLL拖到其上方,即可出现注册成功的提示。
(7)用记事本等编辑软件建立内容如下的HTML文件SaveSelectedHTML.HTM,并将其保存到C:\。
<SCRIPT LANGUAGE="JavaScript">
var HTMLObj;
HTMLObj =new ActiveXObject("SaveHTML.Saver");//建立COM对象
HTMLObj.SaveIt(window.external.menuArguments.document.selection.createRange().htmlText);//调用对象的接口,保存选定内容到本地文件
</SCRIPT>
现在,打开一个网页,选定其中的一部分内容,然后单击鼠标右键,就会出现如上图2所示的对话框;选择好文件的保存位置,设定好文件的名字,然后单击“开始保存”,选定部分的内容就会保存在你的计算机里面了。
以上程序用VB6.0和JavaScript配合实现,在Windows 2000/XP环境下均验证通过。
三、程序需要改进的方面
由于程序只是保存了选定部分的HTML代码,因此网页中的图像、声音等对象的URL都是Internet上的地址。这样在IE脱机的情况下虽然文字可以正常显示,但是图像等对象却只能显示为占位符;只有在IE连接互联网的情况下才能正常显示图像等对象。为解决此问题,我们可以在脚本中通过window.external.menuArguments.document对象的images数组元素的src属性来获得图像的URL,通过window.external.menuArguments.document对象的embeds数组元素的src属性来获得其他多媒体对象的URL,然后将这些URL作为参数传递给COM对象,由COM对象完成这些文件的下载,并修改HTML代码中这些文件的Internet地址为本地地址。限于篇幅,在此只是提出实现思路,有兴趣的读者可以自己做一下。
|