2007年01月27日

既存アプリのVista対応・改造計画:2回目「開発環境での不具合−SendKeys」

MicosoftがVistaではVB.NETとVB.NET2003をサポートから外し、VB6をサポートすると発表したことは以前にも紹介した。しかしVista上で動かしたところVB6の開発環境で変な現象を見つけた。

VB6のTipsの中でもよく紹介されるものに、テキストボックスでEnterキーを押したら次のテキストボックスにフォーカスを移動させるものがある。DOS時代のアプリの操作性を再現するためである。
この方法には KeyPressイベント内で SendKeys "{TAB}" を実行することで可能だが、どういうわけか作成したプログラム(EXE)では問題ないのに、開発環境で動かすとエラーになる。

下図1・2・3を参照

図1:フォームにテキストボックス2つとコマンドボタン1つ
サンプルフォーム

図2:実行させ、テキストボックスでEnterキーを押すとエラーが発生
エラー発生

図3:デバッグしてみるとSendkeysのところでエラーしたのがわかる。
エラー箇所

この点について、Microsoftのサポート技術情報に同様の問題がOffice2003のVBAで発生することが載っていた。(手持ちのOffice2000でも同じ現象を確認した。)
http://support.microsoft.com/kb/931136/ja

Sendkeysは外部のアプリケーションを操作するときにも使う。
私のオンラインソフトScreenCutterではキャプチャーした画像をOutlookExpressに添付画像として自動で貼り付ける機能に利用されているが、これがVistaではうまく働かなかった。悩んだ挙句 Win32APIのkeybd_eventを使うことで正常に動作するようになったが、先に述べたようにSendkeysを使ってもEXEからでは外部アプリの操作は大抵のものはちゃんと動くのだ。


posted by なっちゃん at 22:02| 静岡 ☀| Comment(0) | TrackBack(0) | Windows Vista & 7 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。