Announcement

Collapse
No announcement yet.

Tasten und Maustasten gedrückt halten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Tasten und Maustasten gedrückt halten

    Hi
    Ich bin grad von Autoit Script nach VB.NET umgestiegen.
    Wenn ich in Autoit eine Taste gedrückt haben wollte, konnte ich einfach SendKey("{a down}") verwenden. Das geht in VB.NET aber nicht mehr.
    Also ich möchte eine Taste bzw Maustaste gedrückt halten und zwar ohne Schleife.

    Hoffentlich kann mir wer helfen

    mfg
    lol? wow gamecard 4 president.

  • #2
    Hallo Juhu,

    hast du es schon mit den Events KeyPress oder KeyDown versucht?

    Gruß
    IHEP

    Comment


    • #3
      Originally posted by IHEP View Post
      hast du es schon mit den Events KeyPress oder KeyDown versucht?
      Das hilft ihm eher nicht: Juhu will nicht prüfen, ob eine Taste gedrückt wird, sondern steuern, als ob sie benutzt wird.

      @Juhu
      Für diese Zwecke ist die Methode SendKeys.Send() gedacht. Was Wunder, dass sie so heißt; vielleicht hättest Du sie selbst in der SDK-Doku/MSDN finden können. Unter den Hinweisen steht auch:
      Geben Sie einen wiederholten Tastendruck in der Form {Taste Anzahl} an. Zwischen Taste und Zahl muss ein Leerzeichen stehen. So steht {LEFT 42} beispielsweise für ein 42-maliges Drücken der NACH-LINKS-TASTE und {h 10} für ein zehnmaliges Drücken von H.
      Eine Funktion "dauerhaftes Drücken" scheint es nicht zu geben. Ich habe auch keine Idee, wie man das "Beenden des Tastendrucks" regeln wollte.

      Jürgen

      Comment


      • #4
        Ich weiß nicht ob das hilft, aber, wie IHEP sagte, ob eine Taste gedrückt wird, wird am KeyDown Ereignis erkannt, ob eine Taste losgelassen wird am KeyUp, wenn Du also so tun wills, als sei diese Tasten gedrückt, vielleicht hilft es dann dieses Event selbst auszulösen?

        Ich habe nicht so viel Erfahrung damit, Du müsstest halt dafür sorgen, dass Du dieses Event nicht selbst abfängst, sondern es normal an Windows weitergibst, damit das System für andere Routinen weiß, ob z.B. die Ctrl-Taste "gedrückt" ist.

        Wenn es jedoch darum geht, z.B. so lange "A" auf dem Bildschirm auszugeben bis der User endlich mal "B" drückt, also wiederholte Feuer-Befehle dieser Taste, weiß ich nicht, ob das damit auch geht, notfalls bist Du halt doch darauf angewiesen in einer Schleife den Tastendruck zu simulieren, die irgendwann abgebrochen wird.

        Comment


        • #5
          @ Jürgen Thomas: Du hast Recht ich habs falsch verstanden.

          Comment


          • #6
            Hi
            Danke für die vielen Antworten.
            Ich hab doch noch eine Lösung gefunden, mit der ich absolut zufrieden bin!

            Code:
            <DllImport("user32.dll", CallingConvention:=CallingConvention.StdCall, _
                            CharSet:=CharSet.Unicode, EntryPoint:="keybd_event", _
                            ExactSpelling:=True, SetLastError:=True)> _
                     Public Shared Sub keybd_event(ByVal bVk As Byte, ByVal bScan As Byte, _
                                                   ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer)
                End Sub
            
                'Definieren von Virtual Keys
                Const KEYEVENTF_KEYUP As Byte = &H2 'KeyUP
                Const VK_A = &H41
                Const VK_D = &H44
                Const VK_W = &H57
                Const VK_LBUTTON = &H1 'Linke Maustaste
                Const VK_RBUTTON = &H2
            
                keybd_event(VK_W, 0, 0, 0) 'Key down
                keybd_event(VK_W, 0, KEYEVENTF_KEYUP, 0) 'Key up
            Danke nochmals!
            mfg
            Juhu
            lol? wow gamecard 4 president.

            Comment

            Working...
            X