0

私の古い質問はすでに取り残されているようです

方法が見つからず困っています

キーを押したときにアプリケーションに何かをさせたい。たとえば、ユーザーが F1 を押すと、F1 が押されている限りキー F1 が送信され、ユーザーが F1 を離すとキー F1 は送信されません。

F1 リリース前にアプリケーションで F1 キーを押し続ける方法が見つかりませんでした

ここにコードがあります

Imports System.Windows.Forms
Imports MouseKeyboardActivityMonitor
Imports MouseKeyboardActivityMonitor.WinApi

Public Class Form1

Private Declare Function GetAsyncKeyState Lib "User32" (ByVal vKey As Keys) As Integer
Public Declare Sub mouse_event Lib "User32" Alias "mouse_event" (ByVal dwFlags As Integer, ByVal dx As Integer, ByVal dy As Integer, ByVal cButtons As Integer, ByVal dwExtraInfo As Integer)
Public Const MOUSEEVENTF_LEFTDOWN = &H2 ' left button down
Public Const MOUSEEVENTF_LEFTUP = &H4 ' left button up

Private WithEvents myKeyboardHookManager As KeyboardHookListener
Dim hookEnabled As Boolean
Public Sub New()
    InitializeComponent()
    myKeyboardHookManager = New KeyboardHookListener(New GlobalHooker())
    myKeyboardHookManager.Enabled = True
End Sub

Private Sub HookManager_KeyDown(sender As Object, e As KeyEventArgs)
    Select Case e.KeyCode
        Case Keys.F1 To Keys.F9
            SendKeys.Send("{F" + Convert.ToChar(e.KeyValue - 63) + "}")
    End Select
    mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
    mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    If hookEnabled Then
        hookEnabled = False
        RemoveHandler myKeyboardHookManager.KeyDown, AddressOf HookManager_KeyDown
    Else
        hookEnabled = True
        AddHandler myKeyboardHookManager.KeyDown, AddressOf HookManager_KeyDown
    End If
End Sub
End Class

このコードは正常に機能しますが、一度しか押せません。私が欲しいのは、私が解放する前に押し続けることです

助けてくれてありがとう

4

0 に答える 0