使用 ProcessStartInfo 打开 chm
Using ProcessStartInfo to open chm
我正在尝试使用 C# 打开一个旧的 chm(已编译 HTML)文件到指定的书签 - 不要问为什么 ;)
var psi = new ProcessStartInfo("hh.exe");
psi.Arguments = @"ms-its:X:/MyApplication/Help/MYHELPFILE.chm::MYHELPFILE.htm#36531"; // 36531 is my "topic path"
var cmdProcess = Process.Start(psi);
这会打开正确的文件,但无法打开到书签位置 (36531)。
当我直接从命令行调用 hh 时,它在书签位置显示了正确的文件:
hh ms-its:X:/MyApplication/Help/MYHELPFILE.chm::MYHELPFILE.htm#36531
我正在使用指定的命令行参数 here。
为什么这两种传递参数的方法不等价?为什么我通过 Process.Start 调用时我的书签被忽略了?
此问题与通过网络打开文件有关,MS 出于安全原因默认阻止了该文件。
以下修复适用于直接打开文件:
https://www.helpscribble.com/chmnetwork.html
但是,当通过子进程打开时,这不起作用(加载文件,但没有 HTML 内容)。
解决方法:将所有.chm文件复制到本地目录,例如C:/help/,然后从那里读取。
我正在尝试使用 C# 打开一个旧的 chm(已编译 HTML)文件到指定的书签 - 不要问为什么 ;)
var psi = new ProcessStartInfo("hh.exe");
psi.Arguments = @"ms-its:X:/MyApplication/Help/MYHELPFILE.chm::MYHELPFILE.htm#36531"; // 36531 is my "topic path"
var cmdProcess = Process.Start(psi);
这会打开正确的文件,但无法打开到书签位置 (36531)。
当我直接从命令行调用 hh 时,它在书签位置显示了正确的文件:
hh ms-its:X:/MyApplication/Help/MYHELPFILE.chm::MYHELPFILE.htm#36531
我正在使用指定的命令行参数 here。
为什么这两种传递参数的方法不等价?为什么我通过 Process.Start 调用时我的书签被忽略了?
此问题与通过网络打开文件有关,MS 出于安全原因默认阻止了该文件。
以下修复适用于直接打开文件: https://www.helpscribble.com/chmnetwork.html
但是,当通过子进程打开时,这不起作用(加载文件,但没有 HTML 内容)。
解决方法:将所有.chm文件复制到本地目录,例如C:/help/,然后从那里读取。