アプリ版:「スタンプのみでお礼する」機能のリリースについて

今、複数のテキストボックス間の移動を
エンターキーを押した時に移動したいです。

そのときSendKeyでTabを渡してやって移動しているのですが、
ある特定のマシンでエンターをすばやく連打していると
キーボードが効かなくなります。

その効かなくなるマシンのスペックや状態を書きたいのですが
法則性がつかめません。

どなたか心当たりのある方、教えてください。

A 回答 (2件)

こんにちは。

maruru01です。

SendKeysを使用した時のキーボード障害は有名のようです。
MicrosoftのHPに以下の関連記事がありました。

http://support.microsoft.com/default.aspx?scid=k …

SendKeysを使用しない方法にしてはどうでしょうか。
例えば、テキストボックスのKeyDownイベントでKeyCodeを判定するとか。
あと、自作のSendKey関数のページを紹介しておきます。

http://shota.s-lines.net/terapad/tpml-log/500/ms …

参考URL:http://support.microsoft.com/default.aspx?scid=k …
    • good
    • 0

sendkeysは、VBからOSにキーを打たせる処理を流しますが、内部処理は割り込み処理のように扱われます。


もちろんOSやメモリの状況によって、他のソフトやキー操作などによる割り込みに左右されます。

VBのDoEventsという命令があります。sendkeysは常にDoEventsを行うイメージですので、他の処理の割り込みを許してしまいます。
フォーカス移動のためのTAB移動をしたいのであれば、全てのコントロールのTABストップを不許可にして、maruru01氏の言われているように、イベントでフォーカス移動位置を指定した方がよいと思います。

もしオプションボタン・ラジオボタン・コマンドボタンなどが含まれているのであれば、フックしないと思うような処理にならないかもしれませんが・・・
少なくとも環境に影響される現状よりはマシになると思われます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!