Recent Trackbacks

June 2017
Sun Mon Tue Wed Thu Fri Sat
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  
無料ブログはココログ

お薦めリンク

ウェブページ

NEWS ZERO

  • NEWS ZERO

« 2007年総括 | Main | 道路特定財源でバット購入 »

January 18, 2008

HtmlHelpを、Escキーで終了させる

Windowsのソフトには、たいてい、ヘルプがついている。
ほとんどは、F1キーを押すと起動するし、しない場合でも、ヘルプボタンなどがあるはずだ。
そのヘルプのデザインが変わっていることにお気づきだろうか?

新しいデザインのヘルプを、HtmlHelpという。
これに対し、従来からのタイプのヘルプを、………これは、単にHelpか。

HtmlHelpは、簡単に言えば、Windows98以降、IEで言えば、4以降に入っている仕組みを使う。

で、問題なのは、Vistaだ。
これには、従来のHelpシステムは、含まれない。
HtmlHelpオンリーになった。

後からユーザーがインストールする方法もあるようだが、初心者には無理なので、書かない。

今後、Helpから、HtmlHelpへと、移行が進むだろうが、それに伴って、不満も出てくる。
それは、HtmlHelpが、Escキーで終了しないことだ。

VistaからPCを使い始めた人、あるいは、HtmlHelpしか見たこと無い人は良い。
そもそも、知らないのだから、不満はないだろう。

しかし、従来のHelpを使い込んだ人たちは、Escキーを押すたびに、わめき声を上げていることだろう。

これについては、対応手段は無いとされてきた。
実際、対応したツールも無いし、ヘルプ自体に、カスタマイズする方法も提供されていない。

で、今回、私のソフトで可能になったので、書くことにした。

ただ、Delphi限定である。
VC、VBなどでも、同様に可能だと思うので、同じ手が使えるはずだ。

必要なunitは、下記の二つ。

HTML ヘルプを呼び出すには?
290_HookGetMessage

まず、HtmlHelpを使えるようにする。
前者の方法だと、起動させたHtmlHelpのウィンドウハンドルが取得できるので、それを保存しておく。

で、その上で、グローバルフックを設定して、WM_KEYDOWNを調べる。
それが、VK_ESCAPEだった場合で、HtmlHelpのクラス名を持っていたら、
SendMessageを、最初に保存しておいたウィンドウハンドル宛に、SendMessageを送りつければいい。

Msg := PMsg(LParam);
case Msg^.message of
WM_KEYDOWN:
begin
 if Msg^.wParam = VK_ESCAPE then begin
  sClassName:=GetClassNameStr(Msg^.hwnd);
  if (sClassName='SysTreeView32') or (sClassName='Internet Explorer_Server') then begin
   if whTagetWinHandle<>0 then
    SendMessage(whTagetWinHandle,WM_SYSCOMMAND,SC_ClOSE,0);
  end;
 end;
end;

当然、各種、エラーチェックは必須だが、だいたいは、上記の通りだ。

後は、通常のウィンドウハンドルや、dll関数のインポートなので、省略。
そうそう、グローバルフックの方は、DLL化が必須なので、よろしく。

思ったより簡単なので、ソフト作者の皆さん、どんどん、Escキーで終了できるようにしてください。

« 2007年総括 | Main | 道路特定財源でバット購入 »

パソコン・インターネット」カテゴリの記事

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/28289/17739301

Listed below are links to weblogs that reference HtmlHelpを、Escキーで終了させる:

» NTTドコモとグーグルが提携 [Starlight/旅行記を写真と文章で綴るブログ]
NTTドコモとグーグルが提携、検索機能を強化しAndroid対応機も開発 [Read More]

« 2007年総括 | Main | 道路特定財源でバット購入 »