Solange warte bis SendInput fertig ist Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

KHA
Posts: 403
Joined: 21 Aug 2018, 11:11

Solange warte bis SendInput fertig ist

29 Nov 2018, 14:01

Hi,
gibt es eigentlich, ein Befehl, der solange wartet bis SendInput fertig ist.
SendInput, sendet tastenweise und das kann unter Umständen lange dauern.

Gruß

Code: Select all

F3::
Text =
(
AutoHotkey, kurz AHK, ist eine Skriptsprache und ein zugehöriger Interpreter, mit denen man die Windows-Benutzeroberfläche steuern kann. Mit Hilfe von AutoHotkey kann man sich wiederholende Arbeitsaufgaben unter Windows automatisieren. AutoHotkey ist eine freie Software.
)
Sendinput, % Text

sleep,200 ; bis SendInput fertig ist
msgbox, Sendinput ist fertig
GamerG1rl
Posts: 48
Joined: 23 Nov 2017, 04:44

Re: Solange warte bis SendInput fertig ist

30 Nov 2018, 02:41

sowas suche ich auch. Aber bislang noch nichts gefunden :/
just me
Posts: 9458
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Solange warte bis SendInput fertig ist

30 Nov 2018, 03:49

Moin,

wie ich es verstehe, landen Benutzereingaben wie Tastatur- oder Mausereignisse in einem Eingabepuffer, der vom System verwaltet wird. Das System versucht dann, die Eingaben bei den Applikationen abzuliefern, für die sie gedacht sind.

Zumindest im Fall von SendInput stellt auch AHK seine künstlichen Eingaben einfach in den Systempuffer. Damit hat SendInput seine Aufgabe erledigt und das Skript wird fortgesetzt. Eine Prüfung, wann die künstlichen Eingaben tatsächlich verarbeitet werden, ist nicht vorgesehen (und technisch wahrscheinlich auch recht anspruchsvoll).
GEV
Posts: 1002
Joined: 25 Feb 2014, 00:50

Re: Solange warte bis SendInput fertig ist  Topic is solved

30 Nov 2018, 04:06

KHA wrote:
29 Nov 2018, 14:01
SendInput, sendet tastenweise und das kann unter Umständen lange dauern.
Die sicherste und schnellste Methode, lange Textpassagen über AHK zu senden, ist die Verwendung der Zwischenanlage.

Code: Select all

F3::
ClipSicherung := ClipboardAll   ; Speichert die gesamte Zwischenablage in eine beliebige Variable.
clipboard := ""  ; Leert die Zwischenablage, damit ClipWait erkennt, wenn der Text angekommen ist.
clipboard =
(
AutoHotkey, kurz AHK, ist eine Skriptsprache und ein zugehöriger Interpreter, mit denen man die Windows-Benutzeroberfläche steuern kann. Mit Hilfe von AutoHotkey kann man sich wiederholende Arbeitsaufgaben unter Windows automatisieren. AutoHotkey ist eine freie Software.
)
ClipWait 2 ; warte max. 2 Sekunden bis der Text kopiert ist
If !(ErrorLevel) ; Kopiervorgang innerhalb 2 Sekunden erfolgreich abgeschlossen (die Zwischenablage enthält neue Daten)
{
	Send, ^v
	Sleep, 200
	msgbox, Text eingefügt!`nDu kannst mit dem nächsten Schritt fortfahren.
	; nächster Schritt
}
else
	msgbox, Kopiervorgang NICHT erfolgreich!
Sleep, 200
clipboard := ClipSicherung ; Originale Zwischenablage wiederherstellen.
ClipSicherung := ""   ; Speicher freigeben, falls die Zwischenablage sehr groß war.
return
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: Solange warte bis SendInput fertig ist

30 Nov 2018, 04:51

Code: Select all

Send {Text}%text%
scheint ähnlich gut wie das Clipboard zu funktionieren.
Recommends AHK Studio
just me
Posts: 9458
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Solange warte bis SendInput fertig ist

30 Nov 2018, 06:14

Bei direkter Verwendung der Zwischenablage über Send, ^v kann es auch Probleme geben, wenn AHK die Zwischenablage unmittelbar nach dem Send ändert.
GEV
Posts: 1002
Joined: 25 Feb 2014, 00:50

Re: Solange warte bis SendInput fertig ist

30 Nov 2018, 06:26

just me wrote:
30 Nov 2018, 06:14
Bei direkter Verwendung der Zwischenablage über Send, ^v kann es auch Probleme geben, wenn AHK die Zwischenablage unmittelbar nach dem Send ändert.
Ist mir auch irgenwie bekannt, deswegen der Sleep vor der Wiederherstellung. Wie anders könnten diese Probleme vermieden werden?
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: Solange warte bis SendInput fertig ist

30 Nov 2018, 07:47

Man überwacht das Programm und schaut ob die Eingabe bereits angenommen wurde.
Recommends AHK Studio
GEV
Posts: 1002
Joined: 25 Feb 2014, 00:50

Re: Solange warte bis SendInput fertig ist

30 Nov 2018, 08:55

Ich lasse mir gerne widersprechen, aber ich glaube nicht, dass Probleme bei der Wiederherstellung nach einem Sleep autreten können.
Wenn es kritisch ist, kann man auf die Wiederherstellung auch ganz verzichten, wenn man die alte Zwischenablage nicht mehr braucht oder sie in einer Datei speichern und zu einem späteren Zeitpunkt z.B. über SetTimer wiederherstellen.
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: Solange warte bis SendInput fertig ist

30 Nov 2018, 11:33

Ich glaube, dass du da schlichtweg falsch liegst.
Das wiederherstellen ist nicht optional - ich deinstalliere Programme die soetwas machen. Es kann mal sein, dass etwas nicht so flüssig funktioniert, das ist OK.
Der Verlust von Daten ist inakzeptabel und indiskutabel.
Es kann sein, dass ein Rechner nach deinem Sleep noch nicht fertig ist mit dem Clipboard. Daraufhin werden die Daten nicht gesendet. Schlimmer noch - es kann sein, dass dein Programm zu spät das Clipboard wiederherstellen und neue Daten überschrieben werden.

Das verwenden vom Clipboard ist für Anwendungen die man mit anderen teilt so keine Option.
Für den Privatgebrauch ist es nicht ganz so schlimm, jedoch immer noch nicht empfehlenswert.
Recommends AHK Studio

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: effel and 38 guests