Tastensimulation im DOS-Fenster

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von Arianit.

    Tastensimulation im DOS-Fenster

    Hallo,
    ich möchte nen tastendruck im windows-dosfenster simulieren und benutze dafür folgende befehle:


    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. Dim prog As String
    4. prog = "C:\WINDOWS\system32\cmd.exe"
    5. Shell(prog)
    6. Dim hw As String
    7. Threading.Thread.Sleep(3000)
    8. hw = "30"
    9. System.Windows.Forms.SendKeys.Send(hw)
    10. End Sub
    11. End Class



    wenn ich statt cmd.exe zum testen notepad.exe verwende dann schreibt er mir die 30 in den editor
    im cmd.exe kann ich allerdings warten solang ich will.
    kann mir bitte jemand sagen was ich falsch mach? gibt es evtl. noch andere sendkey befehle?
    hab schon gegoogelt und nichts zu dem thema gefunden
    1. Nim statt Shell lieber Process.Start(prog)
    2. In die CMD kannst du nicht einfach per Sendkeys schreiben. Machs direkt als Startparameter.

    LG Finn

    edit: CMD Befehle kannst du mit so angegeben: PFAD\CMD.exe /c ping 127.0.0.1

    edit2: normal musst du bei SendKeys nicht gleich die ganze Anweisung schreiben du kannst auch System.Windows.Forms weglassen(im Normalfall)

    edit3: *hust* bei google findet man sicher was zumindest finde ich haufenweise *hust*

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „FinnSoft“ ()

    also ums nochmal klar zu stellen ich möchte keinen befehl eingeben sondern einfach was reinschreiben. habe nämlich ein anderes programm wo man auch befehle in eine consolenart reinschreibt, ist aber eben kein cmd sondern was anderes. aber da ich mit sendkeys in cmd auch nicht weiter komm wär es vllt hilfreich wenn ich zunächst dort tastendruck simulieren könnte und das dann auch in dem besagten programm probieren kann.

    muss ich jetz startparameter googeln oder kannst du mir schnell ein beispiel nennen ;)
    Ich glaube fast, dass das nicht geht. Ist halt der Sinn der Console.
    Du kannst natürlich Dein eigenes Konsolenprogramm schreiben (einfach ein leerer Rahmen mit einer Endlos-Tastatzurabfrage) und mit diesem testen. Da bekommsgt Du auf jeden Fall ein Gefühl dafür, was geht und was nicht.
    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!
    Nun, das Console-Fenster ist halt kein richtiges Windows-Fenster.
    Wenn Du die Konsole über Process startest, bringt

    VB.NET-Quellcode

    1. WaitForInputIdle()

    eine InvalidOperationException:
    "Fehler bei WaitForInputIdle. Möglicherweise hat der Prozess keine grafische Schnittstelle."
    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!
    Keine Ahnung.
    Probier es aus und berichte hingterher.
    Alles was auf SendKeys basiert, dürfte bei der Konsole nicht funktionieren, weil SendKeys nur ein SendMessage() aufruft, und der Empfänger davon ist ein echtes Windows-Fenster. (der ist von mit :thumbsup: )
    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!