メニューエディタでEscキーのショートカットキーを設定するには?

解決


マロン  2005-08-28 03:46:46  No: 124539

[開発環境:Win98/XP,VB6SP6]

いつもお世話になっています。
今回はメニューエディタについてお尋ねします。

WebBrowserコントロールを使用してサイトをダウンロード中に、
Escキーを押したらダウンロードを中止させたいと思い、VBデザイン画面
のメニューエディタでショートカットキーを設定しようとしたところ、
Escキーがありません。

Escキーをメニューコマンドに設定することは、VBでは不可能なのでしょうか?


いな  2005-08-28 04:41:51  No: 124540

不可です。
通常のショートカットファイルのプロパティで設定できる。
ショートカットキー(K)でも
Enter,Esc,Tab,Space,Del,PrintScreen,BackSpaceは使用できませんよね?

おそらく、VBでは、、、でなく
Windows上で設定することは不可能に思います。


いな  2005-08-28 04:46:09  No: 124541

ただし、上記はショートカットキーというものに対して、
設定が不可であって、

KeyPressイベントや、KeyDownイベントなどを組み合わせて
実現する分には可能です。


通ってみた  2005-08-28 09:28:14  No: 124542

自分なら、
1:タイマー始動
2:GetAsyncKeyStateAPIでESCキーをチェック
3:ESCが押されたかページ表示がCompleteしたらタイマーを停止

という感じにするかな・・・ただこれだとアクティブでなくてもESCを拾ってしまうので、その辺の処理も必要ですが


マロン  2005-08-28 12:33:00  No: 124543

いなさん、通ってみたさん、ありがとうございます。

やはりVBでのEscショートカットキーの設定はだめなんですね。
もちろん私もお二人がご提案の方法は考えたんですが、メニューコマンドに
「中止(P)  Esc」のように表示させたいと思い、ショートカットキーにこだ
わった次第です。

ならばということで、Escキーの横にあるF1キーを、変わりに当てるのはどう
かと思うのですがどうでしょうか。
しかしF1キーというのは、ヘルプ表示に使われたりすることが多いよう
なので、これは避けたほうがよいかなとも思っています。


通ってみた  2005-08-28 17:33:16  No: 124544

F1キーに割り当てても構わないと思いますが、ESCに近いからというのはどうでしょうか・・・

自分なら
1:F1キーに中止処理を記入(メニュー表示を「中止 Esc」とする)
2:なんらかの方法でESCキーを判定→押されたらF1キーの処理に飛ばす

とすれば、両方実現できるのでこうしますね


マロン  2005-08-28 21:58:59  No: 124545

通ってみたさん、貴重なアドバイスありがとうございます。

なんとか目的が達成できましたので、ご報告します。
手順は通ってみたさんのおっしゃる通りで、

Form1上で、

  1:タイマー始動
  2:GetAsyncKeyStateAPIでESCキーをチェック
  3:ESC押下でサイトのダウンロードを中止

また、これまでダウンロードの中止にはF1を考えていましたが、F1はヘルプキー
にしました。
ですので、タイマーをもう一つ設けて、これはF1キーの検出専用とし、F1が押されたら
ヘルプ、Escが押されたらダウンロード中止、としました。

メニューの表示は「中止(P)   Esc」として、まあ体裁はこれでいいかなと思います。

ここで、

>ただこれだとアクティブでなくてもESCを拾ってしまうので、その辺の処理も必要ですが

への対処として、タイマーは基本的に動いている状態にし、例えばForm1からモーダルで
Form2を開いた時はタイマーを停止し、Form2を閉じてForm1に戻ったらタイマー
を再度始動、というようにしました。

これで、Form1とForm2でのF1およびEscはきちんと認識されて、意図した働きをするように
なりました。

ということで、この件は解決ということにさせて頂きます。
通ってみたさん、本当にありがとうございました。


ひろ  2005-08-30 02:17:51  No: 124546

もっと簡単にESCキーを拾うには、

CommandButtonを表示位置かオブジェクトの重なりの関係でユーザーには見えない場所に置いてCancelプロパティをTrueに設定。

あとはClickイベントプロシージャに処理内容を記述するだけです。


マロン  2005-08-30 09:07:26  No: 124547

ひろさん、なるほど。
そういう方法もあるんですね。
試してみましたら、おっしゃるように簡単にEscキーを認識できました。

CommandButtonはよく使いますが、Cancelプロパティは、名前は知っていて
もその使い方は深く意識していませんでした。
参考にさせて頂きます。どうもありがとうございました。


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

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






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