AutoHotKey - Skripte mit mehr als einem Alt-Tab

2

Ich versuche, ein Skript zu erstellen, das die Felder in einem Formular in einem Fenster in ein Formular in einem anderen Fenster kopiert. Verwenden Sie dazu Alt-Tab, um zwischen den Fenstern zu wechseln.

Das erste Alt-Tab funktioniert, um von Fenster 1 nach Fenster 2 zu wechseln, aber das nächste Alt-Tab, um von Fenster 2 nach Fenster 1 zu wechseln, funktioniert nicht.

Mein Skript lautet wie folgt:

#z::Send ^c!{tab}^v!{tab}{tab}^c!{tab}{tab}^v!{tab}{tab}^c!{tab}{tab}^v!{tab}

Wenn Sie auf Fenster z drücken, soll das aktuelle Feld in Fenster 1 kopiert, in Fenster 2 verschoben und eingefügt werden. Gehen Sie dann zurück zu Fenster 1 und kopieren Sie das nächste Feld. Gehen Sie zu Fenster 2 und fügen Sie es in das nächste Feld ein und so weiter.

Kann jemand helfen.

Vielen Dank

arrogers
quelle

Antworten:

2

Ich habe nicht festgestellt, dass das Senden von Tastenanschlägen unter diesen Umständen sehr effektiv ist. Es gibt zu viele verschiedene Möglichkeiten, wie es schief gehen könnte. Ich würde versuchen, die eingebauten Variablen der Zwischenablage zu verwenden und nur einmal zwischen den Fenstern zu wechseln.

Sie können einen Hotkey verwenden, um eine Reihe von Anweisungen im folgenden Format in Ihrem Skript auszuführen:

z::
; do a bunch of stuff here
return

Ich würde die Daten aus dem ersten Formular auf einmal abrufen und speichern:

clipboard =  ; Start off empty to allow ClipWait to detect 
Send ^c
ClipWait 
Field1:=ClipboardAll

Send {Tab} ; move to next field

Sobald Sie die Daten aus dem ersten Fenster erhalten haben, können Sie zum nächsten Fenster wechseln:

Send AltTab 

(Obwohl eine bessere Methode ist WinActivate .)

Im zweiten Fenster können Sie das Formular nach unten verschieben und Daten aus dem ersten einfügen:

clipboard = %Field1%
Send ^v
Wait 100

Send {Tab} ; move to field 2...

Sehen AutoHotKey Seite für Variablen in der Zwischenablage als Referenz.

yhw42
quelle
1

Hier sind zwei sehr einfache Methoden, um genau die von Ihnen gewünschte Alt-Multiple-Tabs-Sequenz zu erstellen. Die Hauptsache ist, dass Sie in den geschweiften Klammern angeben können, wie oft eine Taste gedrückt werden soll !:

1) Im Folgenden wird das Vertraute verwendet ! zum alt und lassen Sie uns die Alt-Tab-Taste 2 Fenster entfernt. Natürlich können Sie die '2' in eine beliebige Zahl ändern:

Send !{TAB 2}

So Ihre Skript kann geändert werden als:

#z::Send ^c!{tab}^v!{tab 2}^c!{tab 2}^v!{tab 2}^c!{tab 2}^v!{tab}

2) In diesem nächsten lassen Sie uns ausdrücklich sagen, wann alt gedrückt wird und wenn es freigegeben wird. Nochmal, {tab} {tab} wird abgekürzt mit {tab 2} :

Send {alt down}{tab 2}{alt up}

So Ihre Skript kann geändert werden als:

#z::Send ^c!{tab}^v{alt down}{tab 2}{alt up}^c{alt down}{tab 2}{alt up}^v{alt down}{tab 2}{alt up}^c{alt down}{tab 2}{alt up}^v!{tab}

Bevor ich nach einer Lösung suchte, versuchte ich es auch ! {tab} {tab} dass du es versucht hast; Es ist nur so, dass die zweite {tab} nicht als alt begleitet gilt.

Ich fand die Antwort in der AutoHotKey-Hilfe & gt; & gt; Tastatursteuerung & gt; & gt; Send / SendRaw / SendInput / SendPlay / SendEvent: Send Keys & amp; Klicks

Miratopiatech
quelle
0

Der einfachste Weg, dies zu tun, wenn die Fenstertitel immer mindestens den gleichen Teilnamen haben (Unbenannt - Editor, Dokument1 - Editor usw.), ist die Verwendung von WinWaitActive Funktion. Wenn Sie wissen, dass sie sich nie ändern werden, öffnen Sie das Programm AU3Record.exe (in C: \ Programme \ AutoIt3 \ SciTE \ ScriptWriter \ AU3Record.exe). Beginnen Sie mit der Aufnahme und klicken Sie einige Male zwischen den Fenstern hin und her. Beenden Sie die Aufzeichnung und nehmen Sie die Zeilen, die mit WinWaitActive beginnen, und die Titel Ihrer Fenster in die Parameter, entfernen Sie alle Änderungen und verwenden Sie diese Zeilen, um zwischen den Fenstern hin und her zu wechseln.

Es ist viel effizienter, dies so zu tun, da Sie sich keine Gedanken über riesige Tastaturbefehle machen müssen (machen Sie dies, Alt-Tab, machen Sie das, Alt-Tab, machen Sie das nochmal, Alt-Tab, usw.) pflegen Sie während der Bearbeitung Ihres Skripts.

Außerdem würde ich als Randnotiz die Tastenfolgen in kleinere zerlegen. Es ist einfach einfacher, sie zu verwalten, wenn eine Sequenz nur zwei oder drei Tasten pro Zeile enthält. Wenn Sie immer noch alle gleichzeitig ausführen müssen, machen Sie daraus eine Funktion.

phuzion
quelle