キーボードからの入力を禁止するには?

解決


cope  2003-03-03 10:25:54  No: 3070

どのアプリケーションがアクティブになっていてもキーボードからの入力を禁止するようなものを作りたいと思っているのですが、どうすればいいのかわかりません。
こちらの過去のTip集でA〜Zを無効というのを見つけていじってみたのですがkeyboardprocの第二引数?がわからなかったのでA〜Zと数字だけしか禁止できませんでした。
ほかのページで検索してみたところ仮想キー(ASCIIコード)を指定すると書いてあったのですがそれでもよくわかりませんでした。
もしよろしければフックの使い方、またはほかの方法を教えていただけないでしょうか?


Taku  2003-03-03 19:59:55  No: 3071

特定の文字入力制限でなければ、FormのKeyPreviewプロパティーをFalseにするだけではダメですか
Editなど入力コントロールにフォーカスがある時に、無効にするには
OnKeyPressイベントにKey:=#0  と記入すれば、キー操作が無効になります。


cope  2003-03-04 01:13:08  No: 3072

回答ありがとうございます。
たしかにそうするとできるのですが、ほかのアプリケーション(メモ帳)などがアクティブになっているときは使えないですよね?
そういう場合にも使用したいんです。


にしの  2003-03-04 01:59:22  No: 3073

仮想キーは、例えばVK_F1などの定数で表されています。
'A'は、VK_Aと同じですが、ファンクションキー1や、[半角/全角]キーは、文字コードを持ちません。
仮想キーを使えば、文字コードを持たないキーも、コードとして判別することができます。
googleなどで「仮想キー」と調べれば、いろいろ出てきます。


cope  2003-03-07 05:33:01  No: 3074

返信が遅くなってすみませんでした。
仮想キーについても調べたのですが、仮想キーコードでa〜zは65〜91ですよね。
でもTip集のやつは60〜99となってました。
この違いがわからなくて困っています。


にしの  2003-03-07 08:40:20  No: 3075

たとえば、OnKeyDownなどのイベントでも仮想キーコードが使われます。
試しにaのキーを押して表示させてみてください。
どこで65〜91や、60〜99などを調べたかわかりませんが、それらを書いたのは人間であって神様ではありません。
間違いはどこにでもありますよ。
実際に実行して、出てきた値とちがえば、自分の手順が悪いか、その情報が間違っているかです。
ちなみに、簡単なサンプルを作って実行するとa〜zの仮想キーコードは「65〜90」です。91は左側のウィンドウズキー(VK_LWIN)ですね。

VK_Aは定義されていないようですが、VK_F1は定義されてますよ。この定数は調べましたか?


cope  2003-03-10 06:15:06  No: 3076

91っていうのはただの間違いです。普通は65〜90ですよね?
でも、こちらの過去のTip集で見つけたフックでは60〜99になってて
60の部分を61にするとaのフックが効きません。
ということは間違ってないと思うのですが・・・


にしの  2003-03-10 07:55:50  No: 3077

A-Zと数字のフックはできているんですよね?
それで、他にどのキーを無効にしたいのですか?
その仮想キーを、Aキーなどと同じ処理させれば無効にできますよ。

それで、「仮想キーがわからない」ということでしたよね。
その答えで、「VK_F1などの定数があります」と言いました。

今の段階で答えは出ていると思いますが…。
それとも、65〜90という範囲の他に、VK_F1を加えたときに、F1キーが無効にならなかったのでしょうか。
それならロジックに問題があると思います。
そのあたりの処理を提示してもらえば、解決の糸口が見つかると思いますよ。


cope  2003-03-11 08:09:59  No: 3078

あっ、そういうことですか。
定数があるものは定数を使って指定すればいいんですね。
数値にこだわりすぎてたみたいです。
無事解決できました。

いろいろありがとうございました。
また何かありましたらよろしくお願いします。


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

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






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