CHM文件中某一个具体页面的连接地址是类似如下的方式:
mk:@MSITStore:F:\FAT32.chm::/fat5.htm
mk:@MSITStore 是一种特殊的协议,用于读取CHM文件中的内容。
System.Net.HttpWebRequest、System.Net.WebClient、文件对象 这些都不识别这种协议。
如果你用它们来读取这样的文件,会报错误:
“无法识别该 URI 前缀。”
好在我们有 XMLHttp 可以识别这种协议
演示代码如下:
首先请确保增加了对 Microsoft XML COM的引用。 可能你的电脑上这个COM有不同版本,无所谓,都可以。
private void button1_Click(object sender, System.EventArgs e)
...{
string DownFileName = @"mk:@MSITStore:F:\FAT32.chm::/fat5.htm";
string SaveFileName = @"C:\11.html";
MSXML2.XMLHTTPClass _xmlHttp = new MSXML2.XMLHTTPClass();
_xmlHttp.open("GET",DownFileName,false,null,null);
_xmlHttp.send(null);
if( _xmlHttp.readyState == 4 )
...{
if(System.IO.File.Exists(SaveFileName))
System.IO.File.Delete(SaveFileName);
System.IO.FileStream fs = new System.IO.FileStream(SaveFileName,
System.IO.FileMode.CreateNew);
System.IO.BinaryWriter w = new System.IO.BinaryWriter(fs);
w.Write((byte[])_xmlHttp.responseBody);
w.Close();
fs.Close();
}
}
可以参考:
阅读(2068) | 评论(0) | 转发(0) |