vbで[ctrl]+[tab]を認識させる方法

このQ&Aのポイント
  • VBで[ctrl]+[tab]を認識させる方法を教えてください
  • VBでMDIフォームを使用してプログラムを作っていますが、[ctrl]+[tab]キー入力を行なうと、子フォーム間でフォームの移動が起こってしまいます。CommandButton押下時にのみ、フォームの移動を行なうようにしたいのです。この問題の解決方法を教えてください。
  • MSDNライブラリには、KeyUpとKeyDownのイベントでTabキーの操作は発生しないと書いてあります。VBで[ctrl]+[tab]を認識させるためにはどのようにすれば良いのでしょうか。お教えください。
回答を見る
  • ベストアンサー

vbで[ctrl]+[tab]を認識させるにはどうしたらよいでしょうか?

はじめまして、どうしてもうまくいきません。教えてくださいませ。 [ctrl]+[tab]キー入力を認識させるにはどうしたら良いでしょうか? 現在、VBでMDIフォームを使用してプログラムを作っております。 [ctrl]+[tab]キー入力を行なうと、子フォーム間でフォームの移動が起こってしまいます。CommandButton押下時にのみ、フォームの移動を行なうようにしたいので、 [ctrl]+[tab]キー入力を制御して実現させようとしているのですが、うまくいきません。 MSDNライブラリには、KeyUpとKeyDownのイベントで Tabキーの操作は発生しないと書いてありました。。。 何か方法がありましたらお教えいただけると助かります。 どうぞよろしくお願いします。

  • gotoo
  • お礼率100% (2/2)

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

SetWindowsHookExでキーボードフックかけなきゃだめでしょうね。 ローカルフックでOKなのかグローバルフックが必要かはわかりませんが。

gotoo
質問者

お礼

そのような手段は知りませんでした。フックについて調べてみます。どうもありがとうございました!

その他の回答 (1)

回答No.1

こんばんは。 TABキーが押された場合、もし移動先のコントロールがなければ(フォームにボタン1つなど)、イベントが拾えるんですが・・・。 そうじゃなければ、KeyUpとKeyDown以外で考えなければ無理ですね。 (^^ゞ

gotoo
質問者

お礼

KeyUpとKeyDownでは無理との事。諦めがつきました。アドバイスありがとうございます。

関連するQ&A

  • VBでEnterを押すとTabで飛ぶ様にする

    お世話になります。 VB初心者です。VBでフォームを作り、TEXTBOXを複数作ると、Tabキーでタブストップの順番にカーソルが移動しますが、Enterを押すとカーソルが移動するようにするのはどうしたら良いのでしょうか? 宜しくお願いします。

  • Tabキーを拾えるVB2005カスタムコンボを作りたいです

    こんにちは。 現在、VB2005をつかって開発をしています。 作りたいものはTabキーやShiftキー押下時にKeydownでイベントを取得できる カスタムコンボボックスなのですがどうも上手くいきません。 どなたかご助言をよろしくお願いします。

  • VBで、非アクティブでも入力を受け取る

    VBをやっている中学生です。 いま、ウインドウ上にキーボードのカタチをしたものを表示させ、ユーザーが押したキーに応じてそのどこかのキーの色が変わるというソフトを作成しようと思っています。 それにあたっていくつか質問があります。 1.VBでウインドウを常に最善面に表示する方法を教えてください 2.ウインドウがアクティブになってなくても、キーさえ押されればその入力を受け取る方法を教えてくださ い。 ちなみに、キーが押されている間だけ色をかえさせたいので  KeyDownと KeyUpを利用しようと思っています。 回答よろしくお願いします。

  • MDI親フォームでのキー入力監視

    はじめまして。 VB6.0 SP5で開発を行っております。 子フォームが開いていない状態のMDI親フォームで、F1~F12のファンクションキーを押下したら、それぞれ対応した子フォームが開くようにしたいのですが、MDI親フォームでは、KeyUpやKeyDownのイベントが発生しないため、キー入力監視ができません。 上記のような事を実現させるためには、どのようにすればよろしいのでしょうか。 MDI親フォームには、PictureBoxを貼りその中にボタンを設置して、マウスクリックでも子フォームを開くようにしています。PictureBoxでKeyイベントを取得しようとしましたが、ボタンをクリックして、子フォームを開き、その子フォームを閉じた後(子フォームのUnLoadイベント内で親フォームのPictureBoxにSetFocusしています)、フォーカスがどこかへ行ってしまい、イベントがとれません。 常に、子フォームを開いている状態で、子フォームでKeyイベントを取得するしかないのでしょうか。その場合、子フォームを閉じた時に、別のフォーム(Keyイベント取得用フォーム)を自動的に開く方法はありますでしょうか。 長文となり申し訳ありません。 ご教授の程、よろしくお願い致します。 開発環境  OS:WindowsXP SP3  言語:VisualBasic6.0 SP5

  • Ctrlキーを押しながらのダブルクリック

    (VB6/WindowsXP) DoubleClickイベント発生時にCtrlキーが押下されているかどうかを判定するにはどうすればいいでしょうか?

  • VB.NET MDI親フォームのスクロールバー制御

    開発環境:Windows XP、VB.NET 2005 MDI親フォームに複数のMDI子フォームを貼り付けるプログラムを作っています。 MDI子フォームを重ならないように配置させているのですが、MDI親フォームの表示領域を超えた場合に自動的にスクロールバーが現れます。 この時に、マウスのホイールの上下の動きにあわて、MDI親フォームのスクロールバーを制御して画面を上下させたいのですが方法が分かりません。 どなたかご享受ください。

  • フォームでの右クリックを禁止したい

    フォーム上で右クリック禁止にしたいのですが どうすればいいでしょうか? フォームの KeyDown(キークリック時) KeyPress(キー入力時) KeyUp(キー開放時) のどれかのイベントな気がしますが どのイベントにどのようなVBAコードを書けばいいのかわかりません。 ご教示よろしくお願い致します。(access2003)

  • キーボードのtabキーとenterキーの変換

    ホームページのあるページにテキストフォームがあります。 キーボードのtabキーを押した時に、enterキーを押した時の処理を施したいと思っています。 通常tabキーを押せば次のフォームにカーソルが移動するかと思いますが、 このページではそれがenterキーとして動いてほしいと思っています。 このテキストフォームの横にはsubmitも置いており、即時にsubmit送信したいのです。 テキストフォームは一つだけです。 なぜそういうことをしたいかというと、スキャンでバーコードを読取りテキストフォームに数値を表示させます。 このスキャナーは設定でスキャンした後にtabキーをセットすることが可能で、 キーコードを確認してもスキャン後にtabキーを入力しているようでした。 しかし、tabキーではスキャン後にsubmit送信されませんので、tabキーをenterキーに変換してしまえばスキャン読み取り後即時にそのフォームが送信されるのではないかと思っています。 このスキャナーでは読み取り後にenterキーを打つという設定はあるのですが、 複数のフォームがある場合にスキャンした値を入力していくことができません。 (※別ページには複数のフォームが存在する) どうすればキーコードを変換してtabキーをenterキーに変換できるのでしょうか? ブラウザはGoogle chromeです。 OSはWINです。 その他不明点がありましたら、ご質問下さい。 よろしくお願いします。

  • VB2005 DataGridでEnterキーでTabキーと同じように移動?

    みなさん!こんにちは? 早速ですが、今趣味で簡単な開発をやっています。その中で、 DataGridでCellの移動(Tabキーの様に)をEnterキーで実行したいのですが、可能でしょうか? 可能でしたらその方法をご教授ください。 よろしくお願い致します。 環境はWindows2000、VB2005です。

  • Firefoxでのタブ遷移(Ctrl+Tab以外)

    Firefoxにおいて、アクティブなタブから一つ右のタブに移動するのに、 「Ctrl+Tab」(次のタブへ)というショートカットキーが用意されていますが、 この動作を、例えば「F3」等のファンクションキーに設定することは可能でしょうか? また、併せて伺いたいのですが、 タブを右クリックすることで、そのタブを閉じるように出来る設定やアドオンはありますか? 以上2点、よろしくお願いいたします。

専門家に質問してみよう