Send Keys to System

  • C#
  • .NET 4.5

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Wolf066.

    Send Keys to System

    Hi,

    Ich versuche aktuelle ein kleines Tool zu programmieren, welches Tastenkombinationen an das System(aktuelles Programm) schicken soll.
    Es soll also nicht mit SendKeys.Send(); an sich selbst Kombinationen schicken, sondern an das zuvor im Focus gestandene Programm.
    So ähnlich wie eine Bildschirmtastatur.

    Weiß jemand wie sich das realisieren lässt? Also das ich z.B. herausfinde, welches Programm im Focus stand bevor man auf meine App gedrückt hat. Und wie ich genau an diese Application dann Kombinationen schicken kann?

    Danke schon mal :D

    LG Wolf
    Hallo @Wolf066

    Generell ist dies doch über SendKeys möglich.
    Dabei ist nur zu beachten das dieses zb. nicht in DirectX / OpenGL Anwendungen (meist Spielen) funktioniert.

    VB.NET-Quellcode

    1. My.Computer.Keyboard.SendKeys(Keys.A)
    2. My.Computer.Keyboard.SendKeys("das ist ein test")
    3. My.Computer.Keyboard.SendKeys(Keys.Enter)
    4. My.Computer.Keyboard.SendKeys("{Enter}")


    Ein Beispiel zum Focus findest Du auf:
    msdn.microsoft.com/de-de/library/ms171548(v=vs.110).aspx

    Liebe Grüße,
    Ruerte
    Trainii: 5.0%
    Abstandshalter
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    Ok hab jetzt den Code von der Seite getestet und er hat nicht funktioniert xD
    Aber das liegt daran, das FindWindow den Rechner nicht findet, obwohl er offen ist....

    C#-Quellcode

    1. // Get a handle to an application window.
    2. [DllImport("USER32.DLL", CharSet = CharSet.Unicode)]
    3. public static extern IntPtr FindWindow(string lpClassName,
    4. string lpWindowName);
    5. // Activate an application window.
    6. [DllImport("USER32.DLL")]
    7. public static extern bool SetForegroundWindow(IntPtr hWnd);
    8. private void b1_Click(Object sender, EventArgs e)
    9. {
    10. // Get a handle to the Calculator application. The window class
    11. // and window name were obtained using the Spy++ tool.
    12. IntPtr calculatorHandle = FindWindow("CalcFrame", "Calculator");
    13. // Verify that Calculator is a running process.
    14. if (calculatorHandle == IntPtr.Zero)
    15. {
    16. MessageBox.Show("Calculator is not running.");
    17. return;
    18. }
    19. // Make Calculator the foreground application and send it
    20. // a set of calculations.
    21. SetForegroundWindow(calculatorHandle);
    22. SendKeys.SendWait("111");
    23. SendKeys.SendWait("*");
    24. SendKeys.SendWait("11");
    25. SendKeys.SendWait("=");
    26. }


    Ne Idee wie ich den statt dem Rechner das Programm selektieren kann, welches als letztes den Fokus hatte?

    Danke schon mal ;D

    LG Wolf

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Wolf066“ ()