Eine frage zu einen code ausschnitt

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von dreamboy5883.

    Eine frage zu einen code ausschnitt

    Hallo community,

    ich habe folgenden Code im Netz gefunden:



    VB.NET-Quellcode

    1. Public Class Form1
    2. 'Option ExplicitPrivate Declare Sub keybd_event Lib "user32" (ByVal _
    3. bVk As Byte, ByVal bScan As Byte, ByVal dwFlags _As Long, ByVal dwExtraInfo As Long)
    4. Const VK_V = 86Const VK_APPS = &H5D
    5. Const KEYEVENTF_KEYUP = &H2Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    6. keybd_event(VK_V, 0, 0, 0)End Sub
    7. End Class




    Dieser Code ist von Visual Basic 6 und funktioniert auch in VB 2008.

    Nun stell ich mir die frage ob man diesen Code ohne weitere Probleme für vb 2008 verwenden kann.

    Und ob dieser Code für alle Betriebssysteme auch funktioniert.
    Hallo,
    das ist ein API-Aufruf, natürlich kannst du den auch unter vb.net absetzen. Aber beachte: API-Calls sind grundsätzlich unmanaged Code!
    Diese API-Funktion gibt es seit Windows NT 3.1 bzw. Windows 95. Allerdings können nur Betriebssysteme die auf dem NT-Kernel basieren, heißt NT, 2000, XP, Vista, die Num-Lock Taste triggern.
    Gruß,
    f0x
    @ foxm2k

    danke für die schnelle Antwort,

    gibt es denn noch eine andere Möglichkeit um so was zu realisieren ???

    Weil ich bin auf der suche nach denn Code für die taste y,

    habe da auch schon einiges gefunden aber leider löst er was anderes im Spiel aus als was er soll.

    Der Code für die Taste V Funktioniert aber.
    Sendkeys, sendet aber nur das Wort wie zum Beispiel:

    SendKeys.Send("Test") oder auch die taste SendKeys.Send("{ENTER}")

    das ist aber nicht Sinn der Sache was ich damit haben möchte.

    Ich realisiere mit dem oben genannten Code das die taste gedrückt bleibt.

    Auslösen tu ich das mit einer Tastenkombination, wenn ich die Tastenkombination das 2 mal drücke dann wird die taste wieder losgelassen.

    Von daher ist Sendkeys das falsche.
    Kommt vor das man es mal falsch versteht, kein thema :)

    Mit Hilfe diesen Code´s bewerkstellig ich das wenn ich im Spiel bin mit Alt + x

    denn gewünschten effekt erzielt.

    Code:

    VB.NET-Quellcode

    1. Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. HK_Klasse = New HotKey(Me)
    3. HK_Klasse.AddHotKey(Keys.X, HotKey.MODKEY.MOD_ALT, "TASTE_X")
    4. End Sub
    5. Private Sub HK_Klasse_HotKeyPressed(ByVal HotKeyID As String) Handles HK_Klasse.HotKeyPressed
    6. Select Case HotKeyID
    7. 'seller
    8. Case Is = "TASTE_X"
    9. If vbutton.Text = "Start" Then
    10. Me.vbutton.Text = "Stop"
    11. keybd_event(VK_V, 0, 0, 0)
    12. 'keybd_event(VK_Y, 0, 0, 0)
    13. Else
    14. Me.vbutton.Text = "Start"
    15. keybd_event(VK_V, 0, KEYEVENTF_KEYUP, 0)
    16. 'keybd_event(VK_Y, 0, KEYEVENTF_KEYUP, 0)
    17. End If
    18. End Select
    19. End Sub

    Das ganze funktioniert super mit der tastenkombination, das v dann gedrückt bleibt.
    Aber wenn ich sagen wir die tastenkombination Alt + y verwende um damit die taste y drücken zu lassen passiert dies nicht.
    Das Ergebnis im Spiel ist dann was ganz anderes als ich erzielen möchte.
    Ich habe schon verschieden Tastaturcodes versucht aber leider immer mit ein anderen Ergebnis.
    Hier mal der Link zur Seite wo man die Codes herbekommen kann:
    torsten-horn.de/techdocs/ascii.htm

    Daher auch meine frage, ob es auch eine andere möglichkeit gibt.