INASOFT 管理人のひとことフリーソフトダウンロードサイト「INASOFT」の管理人 矢吹拓也 が日々の「ひとこと」を語るページです。 2021年1月1日より、旧ブログ(blog.inasoft.org)からお引越ししました。 ・INASOFT Webサイト: https://www.inasoft.org/ ・管理人のふたこと(長文記事/寄稿文): https://www.inasoft.org/talk/ 2022年7月下旬より再び本業多忙化してきているため、更新頻度は落ちます。 [2022/7/24 19:32] Tweet ■Windows APIのRegisterHotkey()って、仕様変更したのかな?マウスのお供の挙動に違和感が。2019年 7月 4日(木) 0:00:00 [さくらのブログから転記] |
RSS配信中 | |
マウスのお供で、新しく追加したホットキーの機能をいじっていた時、ふと、ホットキーの割り当てを起動中に変えた場合に、古いホットキーが無効にならないことに気づきました。 例えば、「ON/OFFの切替」をCtrl+Alt+Aに割り当てた後、起動したままCtrl+Alt+Bに割り当て直した場合、Ctrl+Alt+AとCtrl+Alt+Bの両方で「ON/OFFの切替」が行われてしまう状況になりました。 ホットキーの割り当ては、Windows APIのRegisterHotkey()を用いて行っています。 このAPIを使った機能を初めて実装したのは、かなり前のことになりますが……、Windows APIのRegisterHotkey()って、最近、動きが変わったのかな? 昔、使った時は、2回目の呼び出しで同じウインドウハンドルとIDを指定したら、前に指定したホットキーは自動解除されたと思うし、MSDNに書いてある解説でもそう解釈できます。 ただ、手元のWindows 10で試したら、そうはならずに1回目のRegisterHotkey()で同じハンドル、同じIDで登録した古いホットキーも有効なままになっているような動きになっています。 登録前に一旦、UnregisterHotkey()を呼び出しておけばそうはならないんですが………、昔からそうだったっけか? 昔からそうで、単なる僕の勘違いなら、プログラムを直せばいいのだが、その場合MSDNの記述が怪しいことになる。もし、最近のWindows 10の不良または仕様変更なら、OSごとに影響を調べて、場合によってはOSごとの処理分けを書く必要が出てきて面倒なことになる。 「猫でもわかるプログラミング」の第193章のホットキーを扱った項でも、ホットキーの変更でUnregisterHotKey()を呼び出している様子はない。 どっちだろう? と思って、最新の?英語ドキュメントを調べたら、「…maintained along with the new hotkey.」(新しい設定とともに保持される)と書いてある!! どうやら、Windows Server 2003までの挙動(重複設定時は自動解除)と、最近のWindowsの挙動(重複設定時は両方保持)では、仕様が異なっているということらしい。 うーむ、ホットキーの変更前にUnregisterHotkey()を挟むように、マウスのお供他を修正せねば…。 目次の表示: ブログではないので、コメント機能とトラックバック機能は提供していません。ご質問・ご意見等はメール、フィードバックまたはTwitter等からお願いします。いただいたご質問・ご意見などは、この「管理人のひとこと」の記事に追加、あるいは新規の記事にする形で一部または全文をそのまま、あるいは加工させていただいた上で、ご紹介させていただく場合があります。 当サイトでは掲載内容による不具合等に関する責任を持ちません。また、内容の正確性についての保証もありませんので、情報をご利用の際は、利用者の自己責任で確認をお願いします。 |
- 最近の更新 - |
|
3212359 (+0056)[+0214] Copyright© 2010-2024 INASOFT |