- PR -

ヘルプファイルを開くには

1
投稿者投稿内容
mari
会議室デビュー日: 2005/01/27
投稿数: 5
投稿日時: 2005-01-27 15:41
JavaでWindows用のヘルプファイルを開くんですが、

Runtime.getRuntime().exec("Help.hlp");

とやってもうまくいきません。
どうすればできるのでしょうか?
takamaro
大ベテラン
会議室デビュー日: 2004/10/12
投稿数: 100
投稿日時: 2005-01-27 17:01
実行環境が明確ではないので的確なヒントかどうか自信はありませんが、、、

・Windowsでヘルプファイル表示を実行しているアプリケーションは何ですか?

コード:

Runtime.getRuntime().exec("Help.hlp");


・コマンドプロンプト上で"Help.hlp"とだけ打ち込んで任意のヘルプファイルが
 実行・表示されますか?
mari
会議室デビュー日: 2005/01/27
投稿数: 5
投稿日時: 2005-01-27 19:27
お返事ありがとうございます。

>・コマンドプロンプト上で"Help.hlp"とだけ打ち込んで任意のヘルプファイルが
> 実行・表示されますか?
実行できました。

>実行環境が明確ではないので的確なヒントかどうか自信はありませんが、、、
OS:WindowsXPHome
Java:J2SDK5.0

>・Windowsでヘルプファイル表示を実行しているアプリケーションは何ですか?
WinHelp32.exeらしいです。

探してみて以下のようにするとヘルプファイルを起動できました。
Runtime.getRuntime().exec("WinHlp32.exe Help.hlp");

環境変数の設定でパスを設定していない場合で、Javaでヘルプファイルを開くことはできるのでしょうか?
例えば、今作っているソフトを配布する場合、Windowsのバージョンごとにヘルプファイルを実行するプログラムの絶対パスを探すとかしなければならないのでしょうか?
おばけ
ぬし
会議室デビュー日: 2002/11/14
投稿数: 609
お住まい・勤務地: 東京都江東区
投稿日時: 2005-01-27 20:04
引用:

例えば、今作っているソフトを配布する場合、Windowsのバージョンごとに
ヘルプファイルを実行するプログラムの絶対パスを探すとかしなければ
ならないのでしょうか?


それはおっしゃる通りだと思いますよ。
それと、ヘルプを開くためのアプリケーションを、レジストリから探し
出すコードも付け加えるか。もしそうするなら、完全にWindowsネイティブ
な話になるので、JNIが必要でしょうねぇ。多分。
ちいにぃ
大ベテラン
会議室デビュー日: 2002/05/28
投稿数: 244
投稿日時: 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
mari
会議室デビュー日: 2005/01/27
投稿数: 5
投稿日時: 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内に表示するぐらいにした方がよさそうです。
a-san
常連さん
会議室デビュー日: 2004/03/15
投稿数: 30
投稿日時: 2005-01-31 12:45
MS-Windowsに限るなら、以下でできますよ。
Runtime.getRuntime().exec("cmd /c start Help.HLP");
mari
会議室デビュー日: 2005/01/27
投稿数: 5
投稿日時: 2005-02-04 20:21
a-san様、返事が遅くなってすいません。

引用:

a-sanさんの書き込み (2005-01-31 12:45) より:
MS-Windowsに限るなら、以下でできますよ。
Runtime.getRuntime().exec("cmd /c start Help.HLP");



上記のようにすると、ヘルプファイルの起動が明らかに早くなりました。
おそらく、「winhlp32.exe ファイル名」を起動する手間が省けたのかな?

cmd /c は「指定されたコマンドを実行した後、終了する」ので
コマンドプロンプトは見えないほどの速さで消えます。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)