7.Send InputV6.dll を使っての Enter キーでのフォーカス移動 |
1.テキストボックスでの Enter キーによるフォーカス移動(SendInputV6.dll を使っての簡単操作例) 2. 3. 4. 5. 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6) Option :[Option Explicit] 参照設定:SendInputV6.dll 使用 API:SendInputV6.dll は、下記よりダウンロードして EXE と同じフォルダーにでも解凍し参照設定して下さい。 その他 :ダウンロード先 http://hanatyan.sakura.ne.jp/freesoft/SendInputV6.zip :SendInputV6.dll については、SendInput 関数のDLL化による簡単キーボード操作 をご覧下さい。 |
1.テキストボックスでの Enter キーによるフォーカス移動(SendInputV6.dll を使っての簡単操作例) |
基本的な操作は、Win32 API関数を使ってのEnterキーでの自由自在フォーカス移動と同じですが、keybd_event APIを使っているので、SendInput API を DLL 化したものを使って操作する方法を掲載しておきます。 この手のサンプルは、色々な方法が掲載されてますが、1長1短がありますので、ご自分の使い勝手のいいものをご使用下さい。 Option Explicit Private Sub Form_Load() 'フォームのイベントを優先 Form1.KeyPreview = True End Sub Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If Shift = 0 Then Select Case KeyCode Case vbKeyReturn 'Enter Call sRemoveFocus Case vbKeyDown '↓ Call sRemoveFocus Case vbKeyUp '↑ Call sRemoveFocus(1) Case Else Exit Sub End Select KeyCode = 0 ElseIf Shift = 1 And KeyCode = vbKeyReturn Then Call sRemoveFocus(1) 'Shift + Enter で逆移動 KeyCode = 0 End If End Sub Private Sub Form_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then KeyAscii = 0 '消音用 End If End Sub Private Sub sRemoveFocus(Optional Previous As Integer = 0) Dim SI As New SendInputV6.Class1 Call SI.KeyReSet 'キー操作の初期化(使用した変数等の初期化) If Previous = 1 Then '前のタブ位置へ移動 [Shift]+[TAB] Call SI.KeyDown(vbKeyShift) 'Shiftキーの押し下げの動作を記録(実際の操作は行われない) Call SI.KeyDown(vbKeyTab) 'Tabキーの押し下げの動作を記録 Call SI.KeyUp(vbKeyTab) 'Tabキーを離す Call SI.KeyUp(vbKeyShift) 'Shiftキーを離す Else '次のタブ位置へ移動 [TAB] Call SI.KeyDown(vbKeyTab) 'Tabキーの押し下げの動作を記録 Call SI.KeyUp(vbKeyTab) 'Tabキーを離す End If Call SI.KeyStroke '上記一連のキー操作を一括で実行(ここで初めてキー操作を実行) End Sub |
2. |
3. |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |
Enter キーによるフォーカス移動 カーソル移動キーによるフォーカス移動 Shift + Enter キーでファーカス逆移動 |