- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我只想在单击菜单栏中的“帮助”时设置 CHM 文件的一个实例,并在再次单击时阻止它打开两次 - 那么我该如何编码?
我尝试将它与 process.isAlive() 一起使用,但在关闭它后,我希望将计数器设置为零,这样只有当计数器为 0 时才会打开另一个 CHM 文件。
helpMenu.addMouseListener(new MouseAdapter() {
// do this after clicked
openCHM();
});
因此 MouseEvent 被触发一次。
openCHM() {
Process p;
if(cnt == 0) {
p = Runtime.getRuntime().exec("hh.exe Help.chm");
cnt++;
if(!p.isAlive()) {
cnt = 0;
}
}
我预计计数器为 0,但后来得出的结论是 MouseEvent 已经触发一次并且代码已经执行,因此它永远不会进入第二个 if 语句并将计数器设置为 0。
编辑
如何打开一次 CHM 文件没有正确答案,但有一个解决方法可以实现这一点,我们只需要查看该文件是否可重命名。
protected void openCHM() {
try {
File file = new File("YOURNAME.chm");
boolean renamable = file.renameTo(file); // can't rename if file is already open, returns true if renaming is possible
if(renamable) {
Runtime.getRuntime().exec("hh.exe YOURNAME.chm");
} else if(!file.exists() ){
// message: file doesn't exist (in path)
} else {
// file is already open
}
} catch () {
}
}
最佳答案
我不是 Java 程序员,但短篇故事 - 不可能(据我所知)。
您知道,hh.exe
是 HTMLHelp 可执行文件,与 *.CHM 文件关联。它只是一个使用 HTML Help API 的 shell,实际上只是托管一个浏览器窗口。
HH.EXE不是单实例,如果您使用HH.EXE打开CHM或其他文件三次,则会出现三个帮助窗口。使用 PowerShell 尝试一下:
PS D:\_working> hh.exe C:\Windows\Help\htmlhelp.chm
多个客户端命令行开关可用于帮助作者,这些开关是 HTML Help 可执行程序 (hh.exe) 的一部分,因此在未设置 HTML Help Workshop 时可以工作。
KeyHH.exe
几年前就使用特殊参数运行。
如果您直接从应用程序调用 HH API,而不是通过 HH.EXE 或 KEYHH.EXE 等第二个帮助程序,那么您必须在关闭应用程序之前关闭所有打开的帮助窗口,否则 Windows 可能会崩溃。
有关您可能感兴趣的问题的一些信息Open CHM File Once.
上面链接中的一些引用信息:
当您这样做时,您只是从命令行一次又一次地调用帮助查看器,您没有使用 HTML Help API,而 HTML Help API 是您在打开 CHM 后需要访问的 API。您需要检查您的 Java 和 Smalltalk 风格是否支持对 HTML 帮助 API 的调用。此 API 详细记录在 Microsoft HTML Help Workshop 的帮助文件中,该文件是您安装的用于生成 CHM 的编译器包。
关于java - 如何只打开CHM文件的一个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57254614/
我刚刚编译并查看了我项目中使用的 CHM 文件。我注意到查看者会记住窗口大小和跨 session 的位置。 HTML 在哪里帮助查看器保存每个 CHM 文件的窗口位置? 最佳答案 这些设置存储在名为
我正在开发一个需要通过命令行创建 chm 的项目。它有多个目录,我能够让它在 FAR 中工作,它没有用于创建 chm 的命令行选项。 使用 MS HTML Help Workshop 命令: "%pr
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 2年前关闭。 Improve thi
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
尝试使用 Microsoft HTML Help Workshop 构建 CHM。当我单击编译时,HTML 帮助研讨会指出: An internal error has occurred. An er
我正在使用 SandcaSTLe Help File Builder 基于 csproj 文件生成 CHM 文件。我最终想做的是找到 CHM 文件中每个主题的 TopicID,并将它们与 Excel-
对于 WPF UI 应用程序,需要创建 CHM 帮助文件。 如何创建 chm 帮助文件? 先用ms word创建文档,然后转换成chm帮助文件?或任何其他方法? 请帮忙 谢谢 拉姆 最佳答案 我用过
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 11 年前关闭。 Improve this
当使用 VC++ 进行开发时,我们将 .hlp 文件发送给客户。创建它的过程如下: 1.创建rtf文件 2. 在 WinHelp 中新建工程,然后编译得到 .hlp 文件。 现在发展已经转移到 .ne
我正在编写一个脚本,它应该能够将附加信息添加到 .chm 文件。 使用hh.exe -decompile outputFolder fileName.chm 命令反编译后,我得到了 html 文件,以
我有一个可以在家里打开的 chm 文件。我在家里和工作中都使用 Windows XP。但是,当我在工作中打开文件时,它不会显示文件的内容。不过,它正确地显示了文件的 TOC。有什么想法吗? 最佳答案
我正在尝试连接 htmlhelp api(这是两个变体中的一个函数的一个大词),并且我遇到了以下用例的问题: 假设我有一个简单的程序员编辑器,带有一堆帮助文件 (.CHM)。有些来自核心运行时库,有些
我刚刚下载了 JSon.Net用于框架 4.0 的 zip 文件。 打开 zip(使用 WinRar)我可以通过双击列出的名称打开 Documentation.chm 文件,并且帮助文件做得很好。 无
我使用 HTML Help Workshop 生成了一个帮助文件 (*.chm)。 但是每次编译我的解决方案时,我都需要更改一行。 想象一下,您确实有一个完整的 *.chm 文件,但是如果服务器构建新
我在一个大的 .chm 文件中有一个巨大的收藏夹列表,我知道收藏夹附加到每个用户 AppData 文件夹中的 hh.dat 文件。我找到了它,当我在记事本中打开 hh.dat 文件时,我看到了书签链接
跟进这个问题(Java thread safety - multiple atomic operations?),我不想再添加更多的问题,但现在我有这个疑问: private final Map> d
任何人都可以帮助我解决我在基于 CHM 的元素中遇到的奇怪问题? 我获取了一个现有的 CHM 文件并使用 WinCHM 解构了该文件。之后我添加了一些新页面并编译了元素。 CHM 文件已创建,到目前为
嘿, 所以,基本上我试图让我的 .chm 文件在帮助窗口中打开,当我从 c# windows 窗体的菜单栏中单击“查看帮助”时。我该怎么做呢? .chm 是否需要在项目目录中? 我尝试使用 helpP
我使用 MadCap Flare 创建了一个 CHM 帮助文件。当我搜索一个我知道在我的文本中出现的术语时,搜索功能总是报告“找不到主题”。 如何修复搜索功能? 最佳答案 在我的例子中,问题是通过在安
我有 CHM文件与 SWF里面的视频。 我想用 MP4 转换它并创建新 CHM文件。 转换,正常工作。但是我找不到任何包含视频文件的程序 CHM像原来一样。我试过例如 HTML Help Worksh
我是一名优秀的程序员,十分优秀!