VB6 製な AP で Vista 環境以降に限定して起きる問題として、MS-IME の挙動がおかしくなるというのがあるんだよね。勤務先では IME 2007 をやめて ATOK を購入させることで対応させていたけど、根本的な問題は恐らく Sendkey Win32 API を利用しているからという気がする。
自分のPJではSendkeyを利用せずにKeybdEvent API を利用してEnterキーとかの制御をしているんだけど、こっちでは同様の問題は発生していないんだよね。定義はこんなの。
Private Declare Sub KeybdEvent Lib "user32" Alias "keybd_event"
(ByVal bVk As Byte, ByVal bScan As Byte,
ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
利用するときはこんな感じ
Private Const KEYEVENTF_EXTENDEDKEY = &H1
Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_TAB = &H9 '[TAB]
Private Const VK_SHIFT = &H10 '[Shift]Call KeybdEvent(VK_TAB, 0, 0, 0)
Call KeybdEvent(VK_TAB, 0, KEYEVENTF_KEYUP, 0)
こんな感じで使ってあげればTABを押して離したというのをSendkeyと同じように実現してくれる。で、使っている感想としてはSendkeyであった動作不具合がこっちだと再現できないので、結構Vista Windows 7 とかでも対応としてやっていいような気がする。
0 件のコメント:
コメントを投稿