掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TOpenDialog上でキー押下を検出するには?(その2) (ID:38748)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
https://www.petitmonte.com/bbs/answers?question_id=5715 いつもお世話になります。 タイトルの件について、リンク先を基に、OpenDialog上で「Alt + C」を押した とき、ある動作をさせていたのですが、問題が生じてしまいました。 ・Alt + Cを押したときの動作の内容 TOpenDialog上に自分でコンボボックスを追加しており、Alt + C が押されたとき、そのコンボボックスにフォーカスを移動させると いうもの。 (テキストエディタなどでよくある、文字コード判別のコンボボックス のようなものと考えていただければと思います。) ・問題点 Alt + Cを押したとき、Windowsのサウンドを有効にしていたときに、 Beep音(のような音)が出てしまう。 ・今まで試していた方法 CallNextHookExを呼び出さなければ音はならない。 でも、↓ここを見ると、他のソフトの動作に悪影響を与える可能性がある様子。 http://msdn.microsoft.com/ja-jp/library/cc429591.aspx ↓ここを見ると、HC_Skipなどというそれらしい識別子を利用している。 この辺を使うのかも知れないが、使い方がよく分からない。 http://www.swissdelphicenter.ch/torry/showcode.php?id=2004 ・お聞きしたい事項 どのようにすれば、他のソフトに悪影響を出さず、Alt + Cを押したとき の音を消せるか。 ・具体的なコード (最上段のリンクからの引用です。) var HookHandle: HHOOK; AltKeyDown: Boolean; function KeyHook(Code: Integer; WParam: WPARAM; LParam: LPARAM): LRESULT; stdcall; begin if (Code >= 0)and(Code = HC_ACTION) then begin if (LParam and $80000000) = 0 then begin case WParam of VK_MENU : AltKeyDown := True; ORD('C'): if AltKeyDown then ShowMessage('ALT+C'); end; end else begin case WParam of VK_MENU : AltKeyDown := False; end; end; end; result := CallNextHookEx(HookHandle, Code, WParam, LParam); end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.