0

Это очень просто. Я хочу, чтобы приложение продолжало отслеживать события KeyDown даже без фокуса.Выполнение функции KeyDown без фокуса в Visual Basic

Private Sub Form1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown 
    Select Case e.KeyData 
     Case Keys.MediaStop 
      PictureBox2_Click(sender, e) 
     Case Keys.MediaPlayPause 
      PauseToolStripMenuItem_Click(sender, e) 
     Case Keys.MediaNextTrack 
      SkipTrackToolStripMenuItem_Click(sender, e) 
     Case Keys.MediaPreviousTrack 
      PreviousTrackToolStripMenuItem_Click(sender, e) 
    End Select 
End Sub 

Приведенный выше код предназначен для музыкального проигрывателя. Функции вызываются при нажатии клавиш мультимедиа («Fn» + «Home», «Fn» + «Pg Up» ... и т. Д.)

В предыдущем комментарии кто-то предложил посмотреть в WH_KEYBOARD_LL для решения, но я на самом деле мало что понимали, если честно.

UPDATE:

link предложил не велика, как 'As Any' ключевое слово не поддерживается 'Declare' функции.

Это как далеко у меня с ним ...

Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As **Any**) As Long 

Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long 

Public Declare Function SetWindowsHook Lib "user32" Alias "SetWindowsHookA" (ByVal nFilterType As Long, ByVal pfnFilterProc As Long) As Long 

Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long 

Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As **Any**, Source As **Any**, ByVal Length As Long) 

**Global** Const WH_KEYBOARD_LL = 13 
Public Const HC_ACTION = 0 

Structure HookStruct 
    Dim vkCode As Long 
    Dim scancode As Long 
    Dim flags As Long 
    Dim time As Long 
    Dim dwExtraInfo As Long 
End Structure 

Ошибки, которые Visual Studio подчёркивает все написано в жирных При наведении курсора на «Любой», это дает мне сообщение «„As Any“не поддерживается„Объявление“заявления»

при наведении курсора на «Global» дает «Синтаксическая ошибка»

ответ

0

Реализация клавиатуры крюком с использованием Windows API является решением. Пожалуйста, проверьте: http://www.planetsourcecode.com/vb/scripts/ShowCode.asp?txtCodeId=13506&lngWId=1

+0

Пожалуйста, смотрите обновления выше –

+0

Проверка 1. http://msdn.microsoft.com/en-us/library/347xhy8d.aspx 2. http://www.codeproject.com/Articles/8641/Equivalent-of-CopyMemory-in-NET ...... Для версии .NET проверьте эту ссылку: http://sim0n.wordpress.com/2009/03/28/vbnet-keyboard-hook -класс/ – rags