皆さん、こんにちは。以前大変お世話になりました。
久々に、質問に来ました。ショコラです。
今回も「そんなことも知らないのか」って言われそうな質問かと思いますが、
よろしくお願いします。
アプリの設定画面に「ボタン」を設けて、
アプリの存在するフォルダに一緒に置いてある「HTMLhelp」を呼び出しています。
以下のような記述です。一応キチンと呼び出せてはいます。
procedure TForm1.Help1Click(Sender: TObject);
begin
ShellExecute(GetDesktopWindow(), 'open',Pchar(ExtFilePath + 'help.chm'),
Nil,'',SW_SHOWNORMAL);
end;
でも、これだと、設定画面の「ボタン」を二度クリックすると、
同じヘルプが二個呼び出されてしまいます。
これを、既にそのヘルプが一個呼び出されている場合,
二個目は呼び出せないようにするには,どうしたらいいでしょうか?
ttp://homepage1.nifty.com/ht_deko/tech001.html#tech016
ここを参考にしてください。
トップは、↓
ttp://homepage1.nifty.com/ht_deko/techalgo.html
#ShellExecute()は関連付けされているファイルを呼び出す関数なので
普通はヘルプの呼出しに使いません。
#以下のサイトを「お気に入り」に登録しておくと何かと便利です。
ttp://www.geocities.co.jp/SiliconValley-SanJose/7625/
http://www.geocities.co.jp/HeartLand-Oak/8031/
ここにHTMLヘルプ作成支援ソフトがあるんですけど、
そのヘルプの中に、Delphi用のユニットファイルが入っています。
使い方の説明もあります。
あと、CreateProcessや、WinExecを使うので、二重起動防止はできませんけど、裏技(?)をひとつ。
HTMLヘルプのファイルのプロパティを見ると、mk:@MSITStore:〜というURLになっています。
これは、mk:@MSITStore:chmファイルまでのパス::内部URL になっていて、
これを、ShellExecuteで指定するとIEでそのHTMLを開くことができます。
応用で、hh.exe に、このコマンドラインを送れば、
HTMLヘルプとして、そのページが開きます。
バッチファイルなど、APIが使えない状況のときにどうぞ^^;
どうも、kazuさん、たかみちえさん。ありがとうです。ショコラです。
ただ、おふたりの説明のページ、それぞれに覗いてはみたのですが、
正直尻込みしています。
私としては、単にヘルプが呼び出せればいい(で、ソレが多重起動できなければ…)
というくらいの気持ちでしかなかったりするので(汗
#つまり、設定画面のタブが複数あって、それぞれの局面でのヘルプを
#呼び出したかったりするわけではない、ので
そのために、コレ全部理解するの?って、どうしても思ってしまいます。
消極的で申し訳ありません。
ココはもはや、ヘルプのボタンを二回押す人はいまい!
と勝手に決めつけて、逃げたいと思います。
お手間取らせたのに、本当にごめんなさいです。
追記)実は、同じ設定画面から、プログラムの設定を保存した「.ini」も
呼び出すのですが(呼び出すための記述は、ヘルプのモノと全く同じ形です)、
ソレもまた、ボタン複数クリックで複数呼び出せてしまえます。
同じ形で同じ現象なので、同じ「複数呼び出し差し止め」のワザが使えるか…
と思ったりしていたのですけど。
やっぱ、ソレも、複数クリックする人が悪い…ってことで逃げようと思います。
ツイート | ![]() |