亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何只打開 CHM 文件的一個實例?

如何只打開 CHM 文件的一個實例?

白豬掌柜的 2023-04-26 16:22:12
我只想在單擊菜單欄中的“幫助”時設置一個 CHM 文件實例,并在再次單擊時阻止它打開兩次 - 因此我該如何編碼?我嘗試將它與 process.isAlive() 一起使用,但在我關閉它之后我希望將計數器設置為零,這只會在計數器為 0 時打開另一個 CHM 文件。helpMenu.addMouseListener(new MouseAdapter() {// do this after clickedopenCHM();});所以 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 () {        }    }
查看完整描述

1 回答

?
元芳怎么了

TA貢獻1798條經驗 獲得超7個贊

我不是 Java 程序員,但短篇小說 - 不可能(AFAIK)。

您知道,hh.exe是 HTMLHelp 可執行文件并與 *.CHM 文件相關聯。它只是一個使用 HTML 幫助 API 的外殼,實際上只是托管一個瀏覽器窗口。

HH.EXE 不是單例,如果用HH.EXE 打開一個CHM 或其他文件3 次,會出現3 個幫助窗口。使用 PowerShell 試試:

PS?D:\_working>?hh.exe?C:\Windows\Help\htmlhelp.chm

多個客戶端命令行開關可用于幫助作為 HTML 幫助可執行程序 (hh.exe) 一部分的作者,因此在未設置 HTML Help Workshop 時工作。

KeyHH.exe多年前以特殊參數運行。

如果您直接從您的應用程序調用 HH API,而不是通過第二個幫助程序(如 HH.EXE 或 KEYHH.EXE),那么您必須在關閉應用程序之前關閉所有打開的幫助窗口,否則您可能會使 Windows 崩潰。

查看完整回答
反對 回復 2023-04-26
  • 1 回答
  • 0 關注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號