alle 10 Minuten eine Taste Drücken

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von spamylustig.

    ich habe da mal versucht zu verstehen, darauf hin kam die diskusion mit API auf.
    Da ich den Link nicht mehr weis, zeige ich mals die ganze disk..
    Spoiler anzeigen
    Hallo zusammen,

    ich habe in der MSDN Libary gelesen das man die SendKeys-Klasse dazu versenden soll um die Tastatur zu bedienen. dort steht auch eine sehr schöne Tabelle, in der alle Tasten aufgelistet sind.

    sende ich nun den befehl

    SendKeys.Send("{NUMLOCK}")

    blendet Windows unten rechts ein Popup fenster ein, und sagt Num-Lock on oder halt Num-Lock off.
    als passiert ja irgendwas.

    Die Tastur bleibt aber wie gehabt auf Num-Lock on stehen. Das heist ich kann weiterhin über den NummerBlock Zahlen eingeben.

    Muss ich da noch mehr senden oder über eine API gehen ?
    lieben dank

    Bernd
    Hallo Bernd,
    Ja, ich glaube die API machts:
    <support.microsoft.com/kb/177674>
    Public Class Form1
    Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
    Private Const KEYEVENTF_KEYUP = &H2
    Const VK_NUMLOCK = &H90
    Const KEYEVENTF_EXTENDEDKEY = &H1
    Declare Function GetKeyState Lib "user32" Alias "GetKeyState" (ByVal ByValnVirtKey As Integer) As Short

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    If Not GetKeyState(VK_NUMLOCK) Then numlockON()
    End Sub


    Private Sub numlockON()
    keybd_event(VK_NUMLOCK, 0, 0, 0)
    keybd_event(VK_NUMLOCK, 0, KEYEVENTF_KEYUP, 0)
    End Sub


    End Class

    Hallo Robert,
    diese funktion habe ich. Sie geht einwandfrei.

    Weil mich das seit langem nervt, habe ich mir den Win32API Helper mal runter geladen.
    Diese Funktion habe ich dort auch gefunden.
    Nun Klicke ich dieses an und er bringt mir die zusammenstellung.
    Aber wie komme ich nun an die ZahlenWerte die dort eingetragen werden ?
    Gibt es eine Beschreibung oder eine Hilfe zu diesem Programm ?

    weil wenn man auf Help drückt, kommt leider nichts !


    Danke
    Bernd

    Bei Option Strict On muss es so heißen:
    Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

    Private Const KEYEVENTF_KEYUP As Integer = &H2
    Const VK_NUMLOCK As Integer = &H90
    Const KEYEVENTF_EXTENDEDKEY As Integer = &H1
    Declare Function GetKeyState Lib "user32" Alias "GetKeyState" (ByVal ByValnVirtKey As Integer) As Short

    Private Sub Button12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click

    If CBool(Not GetKeyState(VK_NUMLOCK)) Then numlockON()
    End Sub
    Private Sub numlockON()
    keybd_event(VK_NUMLOCK, 0, 0, 0)
    keybd_event(VK_NUMLOCK, 0, KEYEVENTF_KEYUP, 0)
    End Sub

    ich suche gerade noch die anderen raus , damit alle was davon haben.

    so hier mal alle drei Tasten

    Const VK_NUMLOCK As Integer = &H90 ' Num-Lock
    Const VK_CAPITAL As Integer = &H14 ' Caps_Lock
    Const VK_SCROLL As Integer = &H91 ' Scroll-Lock

    Hier mal die allgemeine MSDN Doku zur keybd_event API:
    <msdn.microsoft.com/en-us/library/ms646304(VS.85).aspx>

    Die passenden KeyCodes findest Du hier aufgelistet:
    Virtual-Key Codes
    <msdn.microsoft.com/en-us/library/ms645540(VS.85).aspx>

    Ergibt für die Einfg-Taste:

    Const VK_INSERT As Integer = &H2D

    In einigen Fällen musst Du auch nicht unbedingt die passende Konstante deklarieren,
    sondern kannst diese auch aus der Keys <msdn.microsoft.com/en-us/libra…m.windows.forms.keys.aspx> Enumeration entnehmen.


    vieleicht hilft dir das ja