2013-10-14 2 views
0

할 방법을 찾는 데 어려움이 있습니다.키를 눌렀다가 놓을 때 감지

키를 누를 때 내 응용 프로그램이 원하는 기능이 있습니다. 예를 들어 사용자가 F1을 누르면 F1 키를 누른 채로 F1 키를 보내면 F1 키를 누르면 F1 키를 보내지 않습니다.

는 사용자가 키

을 해제하는 방법을 자동으로 키 누름에 따라 키 누름과에서 SendKeys를 감지 할 때이를 감지 할 수있는 방법을 찾을 수 없습니다? anyhelp

에 대한

덕분에

+0

이다 그래서 여기

내가 코드를 게시 할 예정입니다 할 수있는 방법을 발견 한 F1 키를 이미 작동 그런 식으로. –

+0

무슨 뜻인지 예를 들어'e'는'e'가 릴리스 될 때까지 F1을 할 것입니다. –

답변

0

나는 누군가가 그것을 찾고 있다면,이 대답 것과 아무 소용이 없다

Imports System.Windows.Forms 
Imports MouseKeyboardActivityMonitor 
Imports MouseKeyboardActivityMonitor.WinApi 
Imports System.Runtime.InteropServices.DllImportAttribute 
Imports System.Runtime.InteropServices 
Imports System.ComponentModel 
Imports System 

Public Class Form1 
Private Declare Function GetAsyncKeyState Lib "User32" (ByVal vKey As Keys) As Integer 

<DllImport("user32.dll", SetLastError:=True)> _ 
Private Shared Function SendInput(ByVal nInputs As Integer, ByRef pInputs As NativeMethods.INPUT, ByVal cbSize As Integer) As Integer 
End Function 
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 Sub DoKeyBoard(ByVal flags As NativeMethods.KEYEVENTF, ByVal key As Keys) 
    Dim input As NativeMethods.INPUT 
    Dim ki As NativeMethods.KEYBDINPUT 
    input.type = NativeMethods.InputType.Keyboard 
    input.u.ki = ki 
    input.u.ki.wVk = Convert.ToInt16(key) 
    input.u.ki.wScan = 0 
    input.u.ki.time = 0 
    input.u.ki.dwFlags = flags 
    input.u.ki.dwExtraInfo = IntPtr.Zero 
    Dim cbSize As Integer = Marshal.SizeOf(GetType(NativeMethods.INPUT)) 
    Dim result As Integer = NativeMethods.SendInput(1, input, cbSize) 
    If result = 0 Then Debug.WriteLine(Marshal.GetLastWin32Error) 
End Sub 

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

첫째, 그 일 같은 것을 얻기 위해, 당신은 양식 KeyPreview = True을 설정해야합니다. 다음으로 KeyDown 이벤트를 사용하려고합니다. 어떤 키 (Keys.F1)에 대한 트랩과 키가 다운되는 한 keydown 이벤트가 스팸 F1에 전달됩니다.

오늘 키보드 트랩에 특별한 문제가 있습니다. See this도 마찬가지이다. 그 너머 너는 너 자신의 일부를 시도해야한다. 어떻게 그게 배우. 막히면 코드를 게시하십시오.

VB.NET/6 태그가있는 60,059 개의 질문을 검색하여 샘플을 찾을 수도 있습니다.

+0

그 도움에 감사드립니다. –

+0

각하 나는 길을 발견했다. 그러나 그것은 내가 좋아하는 것처럼 아직도 움직이지 않는다. .. 당신은 나를 도와 줄 수 있냐? –

관련 문제