Tastendruck simulieren und solange simmulieren bis ich den Button loslasse.

  • VB.NET

Es gibt 50 Antworten in diesem Thema. Der letzte Beitrag () ist von paco86.

    Tastendruck simulieren und solange simmulieren bis ich den Button loslasse.

    Hallo erstmal !
    ich bin noch sehr neu im gebiet der Programmiereung.

    Mein Plan ist folgender. ich möchte am ende ein programm namens xbmc mit hilfe von touchscrenn buttons steuern. dazu möchte ich mit dem Button (Lautstärke senken) die Taste SUBTRACT Simulieren.
    Das klappt auch, jedoch möchte ich sie solange ich den Button drücke aktiv lassen. also so als ob ich auf einer fernbedienung lange auf lautstärke minus gehe und die lautstärke dann schnell leiser wird.
    zurzeit klappt es nur wenn ich den Button wiederholt klicke. Dasselbe gilt auch für die Pfeiltaste nach rechts damit ich schnell durch die filmbibliothek komme und nicht 1000 mal den Button Pfeil nach rechts.

    ich habe bereits die ganze nacht gesucht und gesucht aber bin nicht fündig geworden.

    Mein aktueller Code sieht so aus. kann ihn mir bitte jemand so schreiben das es geht ? ich hab null ahnnung von timern oder sonst etwas.
    Ich wäre eurer Hilfe sehr dankbar !!!


    VB.NET-Quellcode

    1. <DllImport("user32.dll", CallingConvention:=CallingConvention.StdCall, _
    2. CharSet:=CharSet.Unicode, EntryPoint:="keybd_event", _
    3. ExactSpelling:=True, SetLastError:=True)> _
    4. Public Shared Sub keybd_event(ByVal bVk As Byte, ByVal bScan As Byte, _
    5. ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer)
    6. End Sub
    7. Private Sub Button33_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button33.Click
    8. 'Definieren von Virtual Keys
    9. Const KEYEVENTF_KEYUP As Byte = &H2 'KeyUP
    10. Const VK_SUBTRACT = &H6D
    11. keybd_event(VK_SUBTRACT, 0, 0, 0) 'Key down
    12. System.Threading.Thread.Sleep(200)
    13. keybd_event(VK_SUBTRACT, 0, KEYEVENTF_KEYUP, 0) 'Key up
    14. End Sub
    Willkommen im Forum. :thumbup:
    Zunächst einmal musst Du Dir klar machen, dass da 2 Seelen ach in Deiner Brust wohnen.
    1. Autorepeat. Wenn Du Notepad öffnest oder hier im Forum-Editor oder so und Du drückst mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
    und lässt dann wieder los.
    2. möchtest Du dies in Deinem eigenen Programm simulieren.
    Da kannst Du natürlich die system-eigene Autorepeat-Funktion nutzen, indem Du das KeyPress-Ereignis einer TextBox nutzt
    oder
    Du machst es fein säuberlich im Tick-Event einer Timer-Prozedur. Allerdings brauchst Du dafür ein Start- und ein End-Signal, da sind ein Button-Druck (Start) und eine Dauer bzw. Tick-Anzahl besser geeignet.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Super das du dich so schnell meldest !!!
    das problem ist nur, das ich keine ahnung habe wie soetwas ansteklle, der code den ich gepostet habe den hab ich mir im internet zusammengesucht !!!
    kannst du mir ein beispiel nenen oder gar eine taste programmieren die eine solche eigenschaft aufweist ? wenn es ´mit der notepad.exe geht dann müsste die autorepeat funktion doch auch in der xbmc.exe gehen.

    Falls du lust und zeit hast es in xbmc zu testen hier ist der link: xbmc.org/download/

    es ist ein sehr kleines programm.

    vielen dank !!!

    paco86 schrieb:

    Falls du lust und zeit hast es in xbmc zu testen
    Stelle konkrete Fragen und Du bekommst konkrete Antworten.
    Ich hab keine Lust, mich auf solch Servern mit Werbung zumüllen zu lassen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    ok also das mit dem SendKeys.Send("{SUBTRACT}") funktioniert zwar auch, jedoch muss ich dann 30 mal auf "Lautstärke-senken" Button klicken um die Lautstärke auf ca. halber lautstärke zu haben.

    Ich möchte das die SUBTRACT Taste solange gehalten wird wie der Button "Lautstärke-senken" von mir gedrückt wird. also der Button soll dauerhaft senden z.b für M mmmmmmmmmmmm oder T tttttttttttttt
    und Minus ---------------. u.s.w.

    Ich weiss nur nicht wie ich es in einer schleife, mit einem timer oder sonst etwas mache. mit der Bildschirmtastatur funktioniert es so da sie genau wie einer reele tastatur funktioniert. wenn ich dort auf Minus drücke wird die Lautstärke gleichmäßi leiser bis ich sie loslasse und so soll es auch mit meinem Button sein.

    Ich wäre euch also dankbar wenn ihr mir einen solchen code schreiben würdet für eine Taste.....

    MFG und danke im vorraus !!!
    ja so hab ich es ja bereits nur sendet er mir nich dauerhaft ---------------- oder dauerhaft mmmmmmmmmmmmmm

    sondern nur bei einem klick m bei zweimal klickem mm u.s.w ich will es aber so das ich halte und es kommt mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm bis ich loslasse und zwar im programm xbmc.exe


    nur wie mache ich das mit dem while ! kannst du mir das bitte machen ich bin absoluter neuling und verzweifel hier halb !!!

    Schlammy schrieb:

    Dann mit while solange gedrückt ist mach das
    Da Du Dich so gut auskennst, schreib doch mal bitte einen Vierzeiler an Code. :D :D :D

    paco86 schrieb:

    nur sendet er mir nich dauerhaft
    Mach Dir eine Form mit einem Button und einem Timer.
    Mit ButtonClick wird der Timer gestartet und gleichzeitig ein Zähler initialisiert (z.B. 20).
    Mit jedem Timer_Tick wird ein Zeichen gesendet und der Zähler dekrementiert.
    Wenn der Zähler Null ist, wird in der Timer_Tick-Prozedur der Tiner angehalten.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    VB.NET-Quellcode

    1. Timer1.Interval = 100
    2. Timer1.Start
    3. Timer1.Stop
    4. ' bzw.
    5. Timer1.Enabled = True ' False
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @paco86: Zieh Dir einen Timer im Designer auf die Form, danach doppelklickst Du darauf und landest in der entsprechenden Timer-Tick-Prozedur.

    Schlammy schrieb:

    Was soll das denn?
    Probier einfach, diesen Deinen Rat in Deinem Kämmerlein nur für Dich allein in Code zu übersetzen.
    Wenn das nicht gelingen sollte, dann enthalte Dich solcher "Hilfestellungen".
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    könnt ihr bitte so net sein und kurz bei euch ein solches programm schreiben und es z.b in notepad testen und es mir dann schicken oder besser noch in xbmc. ich weiss ich verlange viel aber so sind wir schnell fertig mit dem thema !!!

    Danke

    paco86 schrieb:

    aber so sind wir schnell fertig mit dem thema !!!
    und Du führst morgen das Programm in der Schule vor, bekommst einen Einser und hast absolut nix dabei gelernt. :S
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Probier einfach, diesen Deinen Rat in Deinem Kämmerlein nur für Dich allein in Code zu übersetzen.

    Wenn das nicht gelingen sollte, dann enthalte Dich solcher "Hilfestellungen".

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim pressstatus As Integer = 0
    3. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    4. If pressstatus = 1 Then
    5. SendKeys.Send("text")
    6. End If
    7. End Sub
    8. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    9. End Sub
    10. Private Sub Button1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseDown
    11. pressstatus = 1
    12. End Sub
    13. Private Sub Button1_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseUp
    14. pressstatus = 0
    15. End Sub
    16. End Class
    schule ist vorbei !!! ich möchte es nutzen um mein xbmc dazu zu steuern !!!

    nagut ich bin jetzt in der timer funktion da hab ich das hier reingeschrieben

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    3. Timer1.Interval = 100
    4. Timer1.Start()
    5. Timer1.Stop()
    6. End Sub
    7. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    8. End Sub
    9. End Class



    jetzt soll der button also in einem abstand vo 0,1 sek. z.b die taste a senden solange ich diesen Button drücke


    @SLammy wie wähle ich nun z.b aus das er es in notepad schreiben soll ?