- - PR -
ヘルプファイルを開くには
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-01-27 15:41
JavaでWindows用のヘルプファイルを開くんですが、
Runtime.getRuntime().exec("Help.hlp"); とやってもうまくいきません。 どうすればできるのでしょうか? | ||||
|
投稿日時: 2005-01-27 17:01
実行環境が明確ではないので的確なヒントかどうか自信はありませんが、、、
・Windowsでヘルプファイル表示を実行しているアプリケーションは何ですか?
・コマンドプロンプト上で"Help.hlp"とだけ打ち込んで任意のヘルプファイルが 実行・表示されますか? | ||||
|
投稿日時: 2005-01-27 19:27
お返事ありがとうございます。
>・コマンドプロンプト上で"Help.hlp"とだけ打ち込んで任意のヘルプファイルが > 実行・表示されますか? 実行できました。 >実行環境が明確ではないので的確なヒントかどうか自信はありませんが、、、 OS:WindowsXPHome Java:J2SDK5.0 >・Windowsでヘルプファイル表示を実行しているアプリケーションは何ですか? WinHelp32.exeらしいです。 探してみて以下のようにするとヘルプファイルを起動できました。 Runtime.getRuntime().exec("WinHlp32.exe Help.hlp"); 環境変数の設定でパスを設定していない場合で、Javaでヘルプファイルを開くことはできるのでしょうか? 例えば、今作っているソフトを配布する場合、Windowsのバージョンごとにヘルプファイルを実行するプログラムの絶対パスを探すとかしなければならないのでしょうか? | ||||
|
投稿日時: 2005-01-27 20:04
それはおっしゃる通りだと思いますよ。 それと、ヘルプを開くためのアプリケーションを、レジストリから探し 出すコードも付け加えるか。もしそうするなら、完全にWindowsネイティブ な話になるので、JNIが必要でしょうねぇ。多分。 | ||||
|
投稿日時: 2005-01-27 22:22
cmd.exe の内部コマンドである 'start' コマンドと同じ働きをするコマンドを
用意して、それを介してhlpを起動できると思います。 たぶん、ShellExecute APIを使っているでしょうから、たとえば以下のものと 同様なものを、C/C++などで作って、よいでしょう。 http://hp.vector.co.jp/authors/VA004101/shex/shex.htm 詳しくは以下のGoogleの検索結果を見てみるとよいでしょう。 Google検索: ShellExecute autorun.inf 作ったコマンドを仮に shellexecute.exe とすると、次のようにして 呼び出せばできると思います。 Runtime.getRuntime().exec("shellexecute.exe Help.hlp"); なお、Help.hlp がコマンドラインから実行できるのは、拡張子 .hlp に winhlp32.exe が割り当てられているからです。 これは、assocコマンドとftypeコマンドで次のようにして確認できます。 C:\> assoc | c:\windows\system32\find ".hlp" .hlp=hlpfile C:\> ftype | c:\windows\system32\find "hlpfile" hlpfile=%SystemRoot%\System32\winhlp32.exe %1 | ||||
|
投稿日時: 2005-01-30 13:42
お返事ありがとうございます。
>もしそうするなら、完全にWindowsネイティブ >な話になるので、JNIが必要でしょうねぇ。多分。 JNI と言うのは、聞いたことがありますがよく分かりません。 自分でよく勉強してみます。 >たぶん、ShellExecute APIを使っているでしょうから、たとえば以下のものと > >同様なものを、C/C++などで作って、よいでしょう。 >http://hp.vector.co.jp/authors/VA004101/shex/shex.htm ShellExecute APIというのがあるんですね。 参考にしてみます。 Javaで作ったものを配布する場合、各プラットフォーム対応にしたいのなら、 Windowsのヘルプファイルはやっぱり適当ではないですね。 せめてテキストファイルのreadme.txtなどを別のFrame内に表示するぐらいにした方がよさそうです。 | ||||
|
投稿日時: 2005-01-31 12:45
MS-Windowsに限るなら、以下でできますよ。
Runtime.getRuntime().exec("cmd /c start Help.HLP"); | ||||
|
投稿日時: 2005-02-04 20:21
a-san様、返事が遅くなってすいません。
上記のようにすると、ヘルプファイルの起動が明らかに早くなりました。 おそらく、「winhlp32.exe ファイル名」を起動する手間が省けたのかな? cmd /c は「指定されたコマンドを実行した後、終了する」ので コマンドプロンプトは見えないほどの速さで消えます。 ありがとうございました。 |
1