Sicherstellen das alle Schritte im Script richtig umgesetzt werden

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

roblive
Posts: 5
Joined: 22 Mar 2023, 14:54

Sicherstellen das alle Schritte im Script richtig umgesetzt werden

Post by roblive » 21 Apr 2024, 04:15

Ich habe ein Script geschrieben, dass über mehrere Loops, Zahlenwerte aus eine Programm mit OCR kopiert und in ein Google Sheet einfügt.
Das Script funktioniert soweit reibungslos. Das Problem ist nur, dass vereinzelt ein schritt im Loop nicht erkannt oder richtig umgesetzt wird und ein falscher wert eingefügt wird oder folgende schritte in Sheet an der falschen Stelle weitergeführt wird.
Abhilfe schaffe ich über Sleep Timer, was relativ gut funktioniert aber auch nicht zu 100% akkurat ist.
Gibt eine Möglichkeit sicher zu stellen alle eingaben sicher ausgeführt werden, neben Sleep Timer?

Code: Select all

SetDefaultMouseSpeed, 1

F2::
 Pause
 Reload

F1::
Loop, 1
{
 SendInput ^!+3			; Timestamp
 Sleep, 50
 Send {NumpadDown}
 Sleep, 50
 Send {NumpadLeft}
 Sleep, 50
}
Loop, 18				 ; ///Armet - Rogue Cowl 0-17///
{
 SendInput ^c			; Copy Item Name From Spreadsheed
 Send !{Tab}			; Switch to Programm
 Sleep, 100
 MouseMove, 1800, 200	; Reset Search
 Click
 Sleep, 350
 MouseMove, 400, 200	; Select Rarity
 Click
 MouseMove, 400, 330	; Select Common
 Click
 MouseMove, 200, 200	; Select Item Name
 Click
 MouseMove, 200, 240	; Select Item Name Search
 Click
 Sleep, 100
 SendInput ^v			; Paste Item Name from Spreadsheed
 Sleep, 100
 MouseMove, 200, 280	; Select First Item with Name
 Click
 MouseMove, 1800, 280	; Select Refresh
 Click
 Sleep, 800
 MouseMove, 1490, 347	; Move Mouse over Price
 Sleep, 10
 Send {F8}				; Start OCR
 MouseMove, 1530, 370	; Create Window over Price
 Sleep, 10
 Send {F8}				; Capture Price
 Sleep, 100
 Send !{Tab}			; Switch to Spreadsheed
 Sleep, 100
 Send {Esc}				; Safety Placeholder
 Send {NumpadRight}		; Select Price Slot
 Sleep, 50
 SendInput ^v			; Paste Price
 Sleep, 50
 Send {NumpadDown}		; Select next Item
 Send {NumpadLeft}
}
Loop, 1					; ///Sallet 18///
{
 SendInput ^c			; Copy Item Name From Spreadsheed
 Send !{Tab}			; Switch to Programm
 Sleep, 100
 MouseMove, 1800, 200	; Reset Search
 Click
 Sleep, 350
 MouseMove, 400, 200	; Select Rarity
 Click
 MouseMove, 400, 330	; Select Common
 Click
 MouseMove, 200, 200	; Select Item Name
 Click
 MouseMove, 200, 240	; Select Item Name Search
 Click
 Sleep, 100
 SendInput ^v			; Paste Item Name from Spreadsheed
 
 etc...

just me
Posts: 9505
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Sicherstellen das alle Schritte im Script richtig umgesetzt werden

Post by just me » 21 Apr 2024, 04:41

Moin,

wenn man nicht weiß, welche Möglichkeiten das Programm bietet, das als Datenquelle genutzt wird, kann man das nicht beurteilen. Wenn es keine andere Möglichkeit gibt als Mausschubserei und Klicks kannst Du nur schauen, ob sich der Erfolg bzw. Misserfolg Deiner Aktionen an Veränderungen auf dem Bildschirm erkennen lässt. Hast Du Dir Dein 'Quellprogramm' schon mit dem 'AutoHotkey Window Spy' (Startmenü) angeschaut?

roblive
Posts: 5
Joined: 22 Mar 2023, 14:54

Re: Sicherstellen das alle Schritte im Script richtig umgesetzt werden

Post by roblive » 21 Apr 2024, 05:27

Da es eine Fullscreen Anwendung ist, in der normale Windows Formatierung sehr eingeschränkt ist. Geht es nur über Mausschubserei, denke ich.

Wo bisher Fehler waren:

Beim Kopieren vom Namen in die Suche des Programms. Ca. 1 von 50 mal einfügen geht irgendwie ins Leere.

Code: Select all

  MouseMove, 200, 240	; Select Item Name Search
 Click
 Sleep, 100
 SendInput ^v			; Paste Item Name from Spreadsheed
 Sleep, 100
 MouseMove, 200, 280	; Select First Item with Name
 Click
Im Spreadsheet die Pfeiltasten um die Felder auszuwählen. Manchmal wird der Tastendruck nicht registriert und Auswahl verschiebt sich dann. Hab hier ein Send {Esc} als Platzhalter eingefügt, was etwas geholfen hat.

Code: Select all

 Send !{Tab}			; Switch to Spreadsheed
 Sleep, 100
 Send {Esc}			; Safety Placeholder
 Send {NumpadRight}		; Select Price Slot
 Sleep, 50
 SendInput ^v			; Paste Price
 Sleep, 50
 Send {NumpadDown}	; Select next Item
 Send {NumpadLeft}

Dachte vielleicht es gibt irgendwelche commands die sicherstellen, dass eine Aktion ausgeführt ist, bevor es mit dem nächsten Schritt weiter geht. Sowas in der Richtung. Denke Mausschubserei ist da grundlegend anfällig dafür.
Danke für deinen Tip, Window Spy ist ja super praktisch!

Noitalommi_2
Posts: 260
Joined: 16 Aug 2023, 10:58

Re: Sicherstellen das alle Schritte im Script richtig umgesetzt werden

Post by Noitalommi_2 » 21 Apr 2024, 14:08

Hi.

@roblive
ClipWait stellt sicher, dass sich etwas im Clipboard befindet, bevor es weiter geht. Das solltest du dir mal anschauen.
Und wenn du zwischen Programmen wechselst, kannst mit WinWaitActive sicherstellen, dass das Fenster aktiv ist und den Tastaturfokus hat.
Dann könntest du die MouseMove/Click-Abfolge vereinfachen, indem du MouseMove weglässt und stattdessen entweder Click mit Koordinaten oder MouseClick nutzt.

Post Reply

Return to “Ich brauche Hilfe”