Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在按键并释放的同时做一些事情_Vb.net - Fatal编程技术网

Vb.net 在按键并释放的同时做一些事情

Vb.net 在按键并释放的同时做一些事情,vb.net,Vb.net,看来我的老问题已经抛在脑后了 我很难找到做这件事的方法 我希望我的应用程序在按键时执行某些操作。例如,当用户按F1键时,只要F1仍按,它将发送键F1;当用户释放F1键时,它将不发送键F1 在F1发布之前,我找不到让我的应用程序保持按F1的方法 这是密码 Imports System.Windows.Forms Imports MouseKeyboardActivityMonitor Imports MouseKeyboardActivityMonitor.WinApi Public Class

看来我的老问题已经抛在脑后了

我很难找到做这件事的方法

我希望我的应用程序在按键时执行某些操作。例如,当用户按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
此代码工作正常,但只按一次。我想要的是它在我释放之前一直按


感谢您的帮助

除了无限的键盘事件流,我看不出您是如何得到任何东西的。从键盘挂钩发送键盘事件是一个非常糟糕的主意。你为什么要这样做?正如你在上一篇文章中所解释的,windows就是这样工作的,只要按下一个键,应用程序就会收到按下X键的消息。除非有什么你没有告诉我们的,你需要做的是编写代码来响应这些关键事件,并做它应该做的事情(希望不是生成更多击键)这是一个控制台应用程序吗?还是怎样