ヘルプを複数呼び出せないようにするには?

解決


ショコラ  2002-08-25 07:18:04  No: 1341

皆さん、こんにちは。以前大変お世話になりました。
久々に、質問に来ました。ショコラです。
今回も「そんなことも知らないのか」って言われそうな質問かと思いますが、
よろしくお願いします。

アプリの設定画面に「ボタン」を設けて、
アプリの存在するフォルダに一緒に置いてある「HTMLhelp」を呼び出しています。
以下のような記述です。一応キチンと呼び出せてはいます。

procedure TForm1.Help1Click(Sender: TObject);
begin
  ShellExecute(GetDesktopWindow(), 'open',Pchar(ExtFilePath + 'help.chm'),
               Nil,'',SW_SHOWNORMAL);
end;

でも、これだと、設定画面の「ボタン」を二度クリックすると、
同じヘルプが二個呼び出されてしまいます。

これを、既にそのヘルプが一個呼び出されている場合,
二個目は呼び出せないようにするには,どうしたらいいでしょうか?


kazu  2002-08-25 09:00:10  No: 1342

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/


たかみちえ  URL  2002-08-25 10:16:57  No: 1343

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が使えない状況のときにどうぞ^^;


ショコラ  2002-08-27 09:03:44  No: 1344

どうも、kazuさん、たかみちえさん。ありがとうです。ショコラです。

ただ、おふたりの説明のページ、それぞれに覗いてはみたのですが、
正直尻込みしています。

私としては、単にヘルプが呼び出せればいい(で、ソレが多重起動できなければ…)
というくらいの気持ちでしかなかったりするので(汗
#つまり、設定画面のタブが複数あって、それぞれの局面でのヘルプを
#呼び出したかったりするわけではない、ので

そのために、コレ全部理解するの?って、どうしても思ってしまいます。
消極的で申し訳ありません。

ココはもはや、ヘルプのボタンを二回押す人はいまい!
と勝手に決めつけて、逃げたいと思います。
お手間取らせたのに、本当にごめんなさいです。

追記)実は、同じ設定画面から、プログラムの設定を保存した「.ini」も
呼び出すのですが(呼び出すための記述は、ヘルプのモノと全く同じ形です)、
ソレもまた、ボタン複数クリックで複数呼び出せてしまえます。
同じ形で同じ現象なので、同じ「複数呼び出し差し止め」のワザが使えるか…
と思ったりしていたのですけど。
やっぱ、ソレも、複数クリックする人が悪い…ってことで逃げようと思います。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加