首页 > 解决方案 > 使用 ProcessStartInfo 打开 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

我正在使用此处指定的命令行参数。

为什么这两种传递参数的方法不等效?当我通过 Process.Start 调用时,为什么我的书签会被忽略?

标签: c#.netwpfprocessstartinfo

解决方案


该问题与通过网络打开文件有关,出于安全原因,MS 默认已阻止该文件。

以下修复适用于直接打开文件: https ://www.helpscribble.com/chmnetwork.html

但是,当通过子进程打开时,这不起作用(加载文件,但没有 HTML 内容)。

解决方案:将所有 .chm 文件复制到本地目录,例如 C:/help/ 并从那里读取。


推荐阅读