Vb.net 在按键并释放的同时做一些事情
看来我的老问题已经抛在脑后了 我很难找到做这件事的方法 我希望我的应用程序在按键时执行某些操作。例如,当用户按F1键时,只要F1仍按,它将发送键F1;当用户释放F1键时,它将不发送键F1 在F1发布之前,我找不到让我的应用程序保持按F1的方法 这是密码Vb.net 在按键并释放的同时做一些事情,vb.net,Vb.net,看来我的老问题已经抛在脑后了 我很难找到做这件事的方法 我希望我的应用程序在按键时执行某些操作。例如,当用户按F1键时,只要F1仍按,它将发送键F1;当用户释放F1键时,它将不发送键F1 在F1发布之前,我找不到让我的应用程序保持按F1的方法 这是密码 Imports System.Windows.Forms Imports MouseKeyboardActivityMonitor Imports MouseKeyboardActivityMonitor.WinApi Public Class
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键的消息。除非有什么你没有告诉我们的,你需要做的是编写代码来响应这些关键事件,并做它应该做的事情(希望不是生成更多击键)这是一个控制台应用程序吗?还是怎样