Tastatur Hardware - strg alt - vmware verlassen

  • Hallo,

    in meinem Workflow wechsle ich häufig zwischen Anwendungen in der vmware und außerhalb der vmware.

    Die vmware kann ich nur mit strg + alt verlassen. Erst dann kann ich auf Anwendungen außerhalb der vmware zugreifen.

    Folgendes funktioniert hier nicht, wenn ich das als Script in der vmware ausführe:

    Send("{CTRLDOWN}{ALT}{CTRLUP}")

    Send("{CTRLDOWN}{ALTDOWN}{ALTUP}{CTRLUP}")

    Diesen Weg fand ich im englischsprachigen Forum:

    https://www.autoitscript.com/forum/topic/64…o-host-machine/

    Wie kann ich die vmware mit AutoIt verlassen?

    Ggf. gibt es eine Windows API, die den Hotkey "strg alt" so senden, dass die vmware das als echte Hardware-Tastatureingabe anerkennt?

    Falls das mit AutoIt nicht geht, würde ich auch einen x-beliebigen anderen Weg nutzen, sofern ich damit sehr schnell ohne eigene Tastatureingabe zwischen der VMware und einem Programm außerhalb der VMware softwaregesteuert hin und her wechseln kann.

    Welche Möglichkeiten kennt Ihr?

    Nutzt jemand von Euch vmware?

    vmware 15.5

    Windows 8 / 10

  • Hallo!

    Ich nutzte zwar sehr viel die VMWare, aber über diese Problem bin ich noch nicht gestolpert.

    Gibt es da nicht eine API zur VMWare? Mit der sollte es möglich sein zwischen Hostrechner und Gast zu kommunizieren.

    Leider kann ich Dir da auch nicht wirklich weiterhelfen. Hast Du schon mal ins VMWare-Forum gesehen ob nicht jemand da schon etwas gemacht hat?

    lg

    Racer

  • Code
    Send("^!")

    Funktioniert das?

    Das funktioniert leider nicht. Vmware erkennt, dass das keine Hardware - Tastatureingaben sind.

    Ganz anderer Vorschlag: Hast Du schon WinActivate() probiert?

    Wenn ich Dich richtig verstehe, soll ich ein Fenster im Hostsystem ansprechen - richtig?

    Das Windows in der vmware hat keine Kenntnis vom Hostsystem und deren Fenster.


    Gibt es da nicht eine API zur VMWare? Mit der sollte es möglich sein zwischen Hostrechner und Gast zu kommunizieren.

    Hast Du schon mal ins VMWare-Forum gesehen ob nicht jemand da schon etwas gemacht hat?

    Im vmware Forum hatte ich keinen Erfolg. Relativ wenige nutzen dort AutoIt.

    Die Idee einer API zu vmware klingt gut, wobei ich mir die Kommunikation Host -> Gast vorstellen kann. Gast -> Host dürfter schwieriger sein.

    Scheint die VixH.au3 zu sein. Das sieht mehr nach einer Einbahn-Kommunikation Host -> Gast aus.

    Ich denke, der einfachste Weg wäre über AutoIt / Windows API - das Senden von Tastaturdrücken, die als Hardwaretastatur anerkannt werden.

    strg alt auf der Tastatur eingeben, und ich befinde mich wieder im Host-System

    Allein das brauche ich per AutoIt :)

    Bugfix und die anderen, die die Tiefen von AutoIt und Windows API ausgelotet haben, könnten das wissen, wie mit AutoIt Tastendrücke so gesendet werden, dass sie vom System als Hardware-Eingaben anerkannt werden.

    Einmal editiert, zuletzt von Banana_2_Day (7. Mai 2020 um 10:03)

  • Bugfix und die anderen, die die Tiefen von AutoIt und Windows API ausgelotet haben, könnten das wissen, wie mit AutoIt Tastendrücke so gesendet werden, dass sie vom System als Hardware-Eingaben anerkannt werden.

    Wenn ich mich recht erinnere ist das nicht möglich.

    Sonst könnte man über diesen Weg auch "Strg+Alt+Entf" senden, was leider bis dato meines Wissens nicht geht und aus sicherheitstechnischen Gründen von Microsoft nicht zugelassen wird.

    Wenn man das als Hardware "Fake"-Eingabe emulieren könnte, wäre diese Sicherheit ausgehebelt, daher wirst du da einen anderen Weg finden müssen, zumindest bei AutoIt.

    ich weiß das Dameware das z.B. kann (Zumindest Strg+Alt+Entf), wie die das Umsetzen weiß ich leider nicht.

    Und zum Thema VMWare API: https://www.vmware.com/support/pubs/sdk_pubs.html

    Und vollständigkeithalber VirtualBox API: https://www.virtualbox.org/sdkref/

    2 Mal editiert, zuletzt von Moombas (7. Mai 2020 um 10:35)

  • Du musst diese Funktionen (Tastenkürzel) auf dem Hostsystem ausführen, da kein Programm vom Gast-System auf das Host-System oder VMWare zugreifen darf.

    Normal weis ein Programm nichteinmal, dass es in einer VM läuft.

    Das Einzige was mir einfällt wäre ein geteilter Ordner/Clipboard und ein Programm beim Host reagiert dann auf Änderungen dort und sendet die Tastenkürzel.

    Dabei solltest du dann aber aufpassen, dass auf keinen Fall die Sicherheit des Host-Systems ein Problem bekommt. Hängt natürlich auch vom Anwendungsfall ab. Du benötigst dann natürlich auch Zugriff auf das Host-System.

  • Zugriff auf das Host-System.

    Nicht unbedingt bei deinem Lösungsvorschlag würde ich es zweiteilen:

    VM: Wenn gewechselt werden soll, wird deine Flag-Datei erstellt.

    Host: Ein Programm überwacht speziellen Ordner auf Gast-System/VM auf das Flag (nur auf dessen Existenz).

    Soll zurück gewechselt werden, muss das Programm auf dem Host das Flag löschen und auf die VM wechseln.

  • Folgendes funktioniert hier nicht, wenn ich das als Script in der vmware ausführe:


    Send("{CTRLDOWN}{ALT}{CTRLUP}")

    Send("{CTRLDOWN}{ALTDOWN}{ALTUP}{CTRLUP}")

    Das zweite Send braucht kein CTRLDOWN, weil die Taste ja erst wieder mit CTRLUP losgelassen wird. Zudem sendest du nicht genau die Keys, so wie sie weiter unten von VMWare genannt werden.

    Teste es mal so:

  • Zitat

    Send("{CTRLDOWN}{ALT}{CTRLUP}")

    Send("{CTRLDOWN}{ALTDOWN}{ALTUP}{CTRLUP}")

    Fehlt da nicht sowieso was und müsste so heißen:

    AutoIt
    Send("{CTRLDOWN}{ALTDOWN}")
    Send("{ALTUP}{CTRLUP}")
  • Fehlt da nicht sowieso was und müsste so heißen?:

    Nein, müsste es nicht.

    Send("{CTRLDOWN}{ALTDOWN}")

    {CTRLDOWN} ist definitiv falsch, wei die Taste ja nur kurz gedrückt und nicht gedrückt gehalten werden soll... {ALTDOWN} ist aber richtig.

    Send("{ALTUP}{CTRLUP}")

    Hier fehlt das {TAB 2} ...bevor {ALTUP} gesendet wird.

    Das steht aber doch alles in meinem Text... was in welcher Reihenfolge gesendet wird... die Frage ist nur, ob und wie lange gewartet werden muss, bevor die nächste Key-Sequenz gesendet wird.

    Wenn das Timing keine Rolle spielt, könnte es z.B. so aussehen:

    AutoIt
    _Send('{RCTRL}{ALTDOWN}{TAB 2}{ALTUP}')
  • Bitnugger: Vor einem ":" kommt kein Satzzeichen, auch wenn eine Frage gestellt wurde.

    Ich bin zudem von folgender Aussage ausgegangen:

    Die vmware kann ich nur mit strg + alt verlassen.

    Also CTRL+Alt drücken und wieder loslassen.

    Das Durchtappen der Fenster benötigt man kein CTRL, wenn man dann erst mal im richtigen Bereich ist (VM <> Host) reicht Alt+ X-mal Tab.

    Wobei es ihm nur um den Wechsel VM -> Host ging.

  • Das sind interessante Anregungen. Ich teste sie gleich.

    Teste es mal so:

    Danke getestet - das hat leider nicht funktioniert. Alles, was ich über AutoIt in der vmware auslöse, bleibt in der vmware. Egal ob Tastatur oder Mausbewegung an den Bildschirmrand oben bzw. unten, womit ich auch raus aus der vmware wäre.

    Das Einzige was mir einfällt wäre ein geteilter Ordner/Clipboard und ein Programm beim Host reagiert dann auf Änderungen dort und sendet die Tastenkürzel.

    Danke - das klingt nach einer Möglichkeit. Ich probiere das aus.

    Als Lösung nehme ich derzeit, Maus auf Taskleiste - damit bin ich auch raus aus der vmware. Per Hand :) Danke an alle!

    2 Mal editiert, zuletzt von Banana_2_Day (9. Mai 2020 um 09:45)