SIerの社長ブログ一覧へ

Windows VistaのF10キー

ビジネス向けのシステムで利用するActiveXコントロールを

Vista対応する仕事をしていたのですが、1つ問題が・・・。


F10キーをキーボードフックできないのです。


Vista + IE7.0の環境で、Webページ上のテキストボックスにフォーカスがある時だけ、
フックが有効にならず、Altキーを押したときのように、メニューバーが表示されてしまいます。


Vistaは、このあたりはちょっと荒い実装になっているのでしょうか。。。


しばらく悩んであれこれ試した結果、キーボードフックではなくメッセージフックで
キー操作を取得できることがわかりました。対象のメッセージはWM_SYSKEYDOWN。


概ねのポイントは以下のとおりです。


・メッセージフックの開始はもちろん::SetWindowsHookEx API。(WH_GETMESSAGEを指定します。)


・GetMessageProcを実装して、対象のWM_SYSKEYDOWNで

 VK_F10のときにキー操作時に行いたい処理を実行。
 あとは、標準の動作を止めるために上記のタイミングで

 メッセージ構造体をクリアします。


上記の調整で見込み通り動くことが確認できました。

さて、あとはテスト!テスト!




追伸:Windows Vistaについて


新世代プレミアム Windows Vista(←かっこいいキャッチですよね。)は、

上記のような互換性や、XPの使い勝手の継承など、

注文をつけたくなるところはありますけど、

OSのあるべき姿を目指した素晴らしいOSだと思います。


ところで、コンポーネントデザイン社内では、

Vista発売開始時に社内標準OSの位置づけにしました。


ビジネス用途だと、XPでも十分と評価されることも多いと思いますが、
技術者が新しいOSをいち早く使うのは当然のことですよね。


システム開発を担う方ははやめに使っておくことをお勧めします。

プロフィール

山口達雄
山口達雄

SIerの社長ブログへようこそ。大規模システム開発のプロマネから、OSネイティブなプログラミングまでこなす現役エンジニアです。

SIerとは:「エスアイヤー」と読みます。情報システム開発において、コンサルティングから設計・開発・保守まで一貫したサービスを個別企業のお客様に提供する会社のことです。


カテゴリ