- ベストアンサー
VB6でSendKeyを利用したTab移動でキーボードが効かなくなる!
今、複数のテキストボックス間の移動を エンターキーを押した時に移動したいです。 そのときSendKeyでTabを渡してやって移動しているのですが、 ある特定のマシンでエンターをすばやく連打していると キーボードが効かなくなります。 その効かなくなるマシンのスペックや状態を書きたいのですが 法則性がつかめません。 どなたか心当たりのある方、教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。maruru01です。 SendKeysを使用した時のキーボード障害は有名のようです。 MicrosoftのHPに以下の関連記事がありました。 http://support.microsoft.com/default.aspx?scid=kb;ja;JP179987 SendKeysを使用しない方法にしてはどうでしょうか。 例えば、テキストボックスのKeyDownイベントでKeyCodeを判定するとか。 あと、自作のSendKey関数のページを紹介しておきます。 http://shota.s-lines.net/terapad/tpml-log/500/msg00163.html
その他の回答 (1)
- TAGOSAKU7
- ベストアンサー率65% (276/422)
sendkeysは、VBからOSにキーを打たせる処理を流しますが、内部処理は割り込み処理のように扱われます。 もちろんOSやメモリの状況によって、他のソフトやキー操作などによる割り込みに左右されます。 VBのDoEventsという命令があります。sendkeysは常にDoEventsを行うイメージですので、他の処理の割り込みを許してしまいます。 フォーカス移動のためのTAB移動をしたいのであれば、全てのコントロールのTABストップを不許可にして、maruru01氏の言われているように、イベントでフォーカス移動位置を指定した方がよいと思います。 もしオプションボタン・ラジオボタン・コマンドボタンなどが含まれているのであれば、フックしないと思うような処理にならないかもしれませんが・・・ 少なくとも環境に影響される現状よりはマシになると思われます。