2013-07-24 31 views
5

W moim programie chcę symulować naciśnięcie klawisza MediaPlayPause. Tak jak notatka, nie chcę sprawdzać, czy klawisz jest wciśnięty, czy wciśnięty, chcę nacisnąć klawisz przez mój program.VB Symulowanie naciśnięcia klawisza

Próbowałem SendKeys.Send ale specjalne klawisze są ograniczone do {Enter} i {Tab} itp

+0

Będziesz musiał użyć Winapi, aby zrobić to, o ile wiem. – Gray

+1

Czy mógłbyś opracować? – jgetrost

+0

Zakładam, że jest to projekt dotyczący projektu WinForm? – JBelter

Odpowiedz

3

Ok, ja przeniesiony C# kodu z tej odpowiedzi: https://stackoverflow.com/a/7182076/2000557

nie wiem VB. Netto, ale nie było to zbyt trudne do skopiowania przy użyciu tego przewodnika: http://msdn.microsoft.com/en-us/library/172wfck9.aspx

W każdym razie, umieszczam przycisk na formularzu za pomocą zdarzenia kliknięcia.

Imports System.Runtime.InteropServices 

Public Class Form1 

    'this constant represents the hex value for the key to send to user32.dll 
    Const APPCOMMAND_MEDIA_PLAY_PAUSE = &HE0000 
    'this constant represents which command. Sort of like the function in user32.dll we are calling. 
    Const WM_APPCOMMAND = &H319 

    'this declares the user32.dll call to SendMessageW we are making 
    Declare Auto Function SendMessageW Lib "user32.dll" Alias "SendMessageW" (
    ByVal hWnd As Integer, 
    ByVal Msg As Integer, 
    ByVal wParam As Integer, 
    ByVal lParam As Integer) As Integer 

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     'call the SendMessage function with the current window handle, the command we want to use, same handle, and the button we want to press 
     SendMessageW(Handle, WM_APPCOMMAND, Handle, APPCOMMAND_MEDIA_PLAY_PAUSE) 
    End Sub 
End Class 

Przetestowałem to, otwierając WMplayer, a przycisk odtwarzał/wstrzymał muzykę, którą miałem. Daj mi znać, jeśli potrzebujesz innej pomocy. Oto referencja, jeśli chcesz zaimplementować inne klucze: http://msdn.microsoft.com/en-us/library/windows/desktop/ms646275(v=vs.85).aspx

+0

Dziękuję, to działa idealnie! Na pewno udzielę ci kredytu za pomoc. – jgetrost

+0

Haha, dzięki. Zrobiłem co w mojej mocy, aby dodać kilka komentarzy, mam nadzieję, że trochę to wyjaśnię, więc nie wygląda to na magię. – Gray

+0

Spróbuj symulować zdarzenie KeyPress w polu tekstowym –