Hotkey-Programmabfolge mit Progress überlagern Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Optimus Prime
Posts: 69
Joined: 04 Feb 2020, 02:47

Hotkey-Programmabfolge mit Progress überlagern

04 Feb 2020, 03:35

Hallo Zusammen,

ich habe eine Programmabfolge gebastelt, die die Parametrierung eines Druckers automatisieren soll.
Die Abfolge wird durch F2 gestartet.
Nun möchte ich einen Progress über die gesamte Ablaufzeit von dem Ablauf legen. Der Progress wird im Skript über F4 gestartet.
Wie kann ich den Progress in den Ablauf integrieren?
Das Skript ist im Anhang:
AHK.ahk
(2.3 KiB) Downloaded 65 times
Vielen Dank im Voraus für die Unterstützung.
just me
Posts: 9424
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Hotkey-Programmabfolge mit Progress überlagern

04 Feb 2020, 04:45

Moin,

so ganz bekomme ich das noch nicht auf die Reihe.

Die F2-Routine läuft mit den aktuellen Sleep-Zeiten 20,4 Sekunden. Die F4-Routine läuft aber nur 15 Sekunden. Geht es nur darum, das Progressfenster beim Start der F2-Routine automatisch anzuzeigen und bis zum Ende der F2-Routine ohne Rücksicht auf die vorgegebenen Wartezeiten der F2-Routine prozentual anzupassen?
Optimus Prime
Posts: 69
Joined: 04 Feb 2020, 02:47

Re: Hotkey-Programmabfolge mit Progress überlagern

04 Feb 2020, 05:17

just me wrote:
04 Feb 2020, 04:45
Moin,

so ganz bekomme ich das noch nicht auf die Reihe.

Die F2-Routine läuft mit den aktuellen Sleep-Zeiten 20,4 Sekunden. Die F4-Routine läuft aber nur 15 Sekunden. Geht es nur darum, das Progressfenster beim Start der F2-Routine automatisch anzuzeigen und bis zum Ende der F2-Routine ohne Rücksicht auf die vorgegebenen Wartezeiten der F2-Routine prozentual anzupassen?
Hallo just me,

die Zeiten habe ich noch nicht final angepasst. Ja, es geht darum das Progressfenster mit F2 zusätzlich zu starten. Das Ende kann durch eine fest eingestellte Zeit erfolgen oder durch den Return von F2 oder oder oder...
Die reinste Form des Wahnsinns ist es, alles so zu belassen wie es ist und zu hoffen, dass sich etwas ändert [Albert Einstein]
Optimus Prime
Posts: 69
Joined: 04 Feb 2020, 02:47

Re: Hotkey-Programmabfolge mit Progress überlagern

05 Feb 2020, 03:46

Hallo Zusammen, anbei das Skript für einen Ablauf, gestartet durch einen Button.
Über diesen Ablauf soll beim Betätigen des Buttons ein Progress o.Ä. laufen, um zu visualisieren das ein Ablauf im Gange ist.
Hat jemand eine Idee oder gar Lösung?
Ich kann den Progress nur als Schritt in die Abfolge einfügen und nicht parallel zur Abfolge laufen lassen!!!

Vielen Dank im Voraus
Attachments
Button ohne Progress.ahk
(1.76 KiB) Downloaded 59 times
Die reinste Form des Wahnsinns ist es, alles so zu belassen wie es ist und zu hoffen, dass sich etwas ändert [Albert Einstein]
just me
Posts: 9424
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Hotkey-Programmabfolge mit Progress überlagern

05 Feb 2020, 05:14

Es geht auch parallel, mit einem Timer. Probier das mal. Ich habe als Grundlage das Skript aus dem ersten Beitrag verwendet.

Code: Select all

#NoEnv                        ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn                         ; Enable warnings to assist with detecting common errors.
SendMode, Input               ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir, %A_ScriptDir%  ; Ensures a consistent starting directory.
Return                        ; Ende des Bereichs, der automatisch ausgeführt wird

F2::                                                                                ;; F2 = Papierdose Eco Midi
; Sleep Zeiten:
; 7000 * 2     14000
;  800 * 3      2400
;  500 * 8      4000
;              20400
SleepTime := 20400
Start := A_TickCount
Progress, b1000 w1000, Bitte warten..., Druckdaten werden geladen!, Hinweis!,
SetTimer, UpdProgress, 1000
Send, ^p                                                                            ;; Drucken
Sleep, 7000
If !WinExist("Drucken")    ; das war ein Syntaxfehler: Hinter dem Funktionnamen darf kein Leerzeichen folgen!
{
   MsgBox, 16, Fehler!, Der Druckdialog hat sich nicht geöffnet!
   SetTimer, UpdProgress, Off
   Progress, Off
   Return
}
Control, Check,, RICHEDIT50W1, Drucken
Sleep, 800
Send, {Backspace}
Sleep, 800
Send, 999                                                                           ;; Eingabe Anzahl Exemplare zum Drucken
Sleep, 800
Control, Check,, Button4, Drucken                                                   ;; Eigenschaften auswählen
Sleep, 7000
Control, Uncheck,, Button20, Eigenschaften von Afinia L901 Label Printer            ;; Maskenoptimierung deaktivieren
Sleep, 500
Control, Check,, Button10, Eigenschaften von Afinia L901 Label Printer              ;; Randlos drucken aktivieren
Sleep, 500
Control, Choose,2, ComboBox1, Eigenschaften von Afinia L901 Label Printer           ;; Typ auswählen (numerisch)
Sleep, 500
Control, Choose,17, ComboBox2, Eigenschaften von Afinia L901 Label Printer          ;; Format auswählen (numerisch)
Sleep, 500
Control, Choose,5, ComboBox4, Eigenschaften von Afinia L901 Label Printer           ;; Speed auswählen (numerisch)
Sleep, 500
Control, TabRight,, SysTabControl321, Eigenschaften von Afinia L901 Label Printer   ;; Reiter "Layout" auswählen
Sleep, 500
Control, Check,, Button3, Eigenschaften von Afinia L901 Label Printer               ;; Benutzerdefinierte Größe auswählen
Sleep, 500
Control, Check,, Button14, Eigenschaften von Afinia L901 Label Printer              ;; Button "OK" drücken
Sleep, 500
Control, Check,, Button50, Drucken                                                  ;; Button "Drucken" drücken
SetTimer, UpdProgress, Off
Progress, Off
Return                                                                              ;; Befehl Ende F2

UpdProgress:
RunTime := A_TickCount - Start
If (RunTime > SleepTime)
   Progress, 100
Else
   Progress, % (RunTime / SleepTime) * 100
Return
Optimus Prime
Posts: 69
Joined: 04 Feb 2020, 02:47

Re: Hotkey-Programmabfolge mit Progress überlagern

05 Feb 2020, 05:51

Hallo just me (und Danke für die Dialoge),

anbei das finale Skript mit den korrekten Abläufen. Ich habe die Hotkeys (F1-F12) nun durch GUI Buttons ersetzt. Ich kriege deine Daten jedoch nicht in die aktuelle Datei. Es öffnet sich dann kein GUI mehr.
Besteht die Möglichkeit bei diesem Skript den Ablauf durchzuführen und den Progress parallel zu starten (Start = Betätigung Button)?
Attachments
GUI DigiPrint Druckdatenauswahl.ahk
(22.48 KiB) Downloaded 63 times
Die reinste Form des Wahnsinns ist es, alles so zu belassen wie es ist und zu hoffen, dass sich etwas ändert [Albert Einstein]
just me
Posts: 9424
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Hotkey-Programmabfolge mit Progress überlagern

05 Feb 2020, 06:37

Erst einmal zwei Anmerkungen:
  1. Blockklammern { ... } sollte man nur dann verwenden, wenn AHK es zwingend vorschreibt. Deine Klammern sind im besten Fall überflüssig. Wenn Du eine visuelle Struktur habe willst, füge einfach Kommentarzeilen ein
  2. if WinExist ("Drucken") ist syntaktisch falsch. Zwischen dem Funktionsnamen und den in Klammern eingeschlossenen Parametern darf kein Leerzeichen sein. Deine 'Variante' ergibt immer 'wahr'. Wenn Du das wirklich prüfen willst (if WinExist("Drucken")), musst Du Dir auch überlegen, was Du im Fehlerfall tun willst.
Ich bin ehrlich gesagt zu faul um zu prüfen, worin genau sich Deine Drucktoutinen unterscheiden. Vieles scheint aber identisch zu sein.

Für den probeweisen Einbau des Progress-Fensters brauche ich noch etwas Zeit.
just me
Posts: 9424
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Hotkey-Programmabfolge mit Progress überlagern  Topic is solved

05 Feb 2020, 09:00

Ok, ich habe die Progress-Anzeige mal versuchsweise in die Routine ButtonEco_Midi: eingebaut. Probier das mal aus.

Code: Select all

#NoEnv
SetTitleMatchMode, 2                               ;< kann hier vorn stehen weil es sich nicht ändert
AcrobatTitle := ".pdf - Adobe Acrobat Reader DC"   ;< Titel des Acrobat Reader Fensters
;;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Gui, Add, Picture, x484 y438 w-192 h-339 , C:\Users\DigiPrint\Documents\AHK Skript\verwendete Bilder\JUNG-since1828.jpg
Gui, Font, S26 CDefault, Verdana
Gui, Font, S26 CDefault, Verdana
Gui, Add, Text, x32 y159 w590 h50 +Center, Programmauswahl für DigiPrint
Gui, Font, S13 CDefault, Verdana
Gui, Add, Button, x12 y219 w150 h50 , Eco_Mini
Gui, Add, Button, x12 y269 w150 h50 , Eco_Midi
Gui, Add, Button, x12 y319 w150 h50 , Eco_Maxi
Gui, Add, Button, x12 y369 w150 h50 , Fresh_Mini
Gui, Add, Button, x12 y419 w150 h50 , Fresh_Midi
Gui, Add, Button, x12 y469 w150 h50 , Snackdose
Gui, Add, Button, x172 y219 w150 h50 , Snack_Roll
Gui, Add, Button, x172 y269 w150 h50 , CandyCan_XS
Gui, Add, Button, x172 y319 w150 h50 , CandyCan_Slim
Gui, Add, Button, x172 y369 w150 h50 , Bonbonglas
Gui, Add, Button, x172 y419 w150 h50 , Ostersixpack
Gui, Add, Button, x172 y469 w150 h50 , tbd
Gui, Add, Button, x332 y219 w150 h50 , tbd
Gui, Add, Button, x332 y269 w150 h50 , tbd
Gui, Add, Button, x332 y319 w150 h50 , tbd
Gui, Add, Button, x332 y369 w150 h50 , tbd
Gui, Add, Button, x332 y419 w150 h50 , tbd
Gui, Add, Button, x332 y469 w150 h50 , tbd
Gui, Add, Button, x492 y219 w150 h50 , tbd
Gui, Add, Button, x492 y269 w150 h50 , tbd
Gui, Add, Button, x492 y319 w150 h50 , tbd
Gui, Add, Button, x492 y369 w150 h50 , tbd
Gui, Add, Button, x492 y419 w150 h50 , tbd
Gui, Add, Button, x492 y469 w150 h50 , tbd
Gui, Add, Picture, x172 y-1 w310 h140 , C:\Users\DigiPrint\Documents\AHK Skript\verwendete Bilder\JUNG-since1828.jpg
Gui, Font, S6 Cgrey, Verdana
Gui, Add, Text, x269 y529 w120 h10 , created by Optimus Prime
; Generated using SmartGUI Creator 4.0
Gui, Show, x127 y87 h545 w662, DigiPrint 2100 - Druckparameter
Return
;;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
GuiClose:
ExitApp
;;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ButtonEco_Mini:
Return
;;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ButtonEco_Midi:
Gui, +OwnDialogs     ;< blockiert das AHK-Fenster während der Meldungs- bzw. Progress-Anzeige
WinActivate, %AcrobatTitle%																			;; aktiviert den (geöffneten) Adobe Acrobat Reader
WinWaitActive, %AcrobatTitle%, , 1                                                  ;; wartet maximal 1 Sekunde auf die Aktivierung
If (ErrorLevel)
{
   MsgBox, 16, Fehler!, Das Acrobat Fenster konnte nicht aktiviert werden!
   Return
}
SleepTime := (7000 * 2) + (800 * 3) + (500 * 8)                               ;< Laufzeit anhand der Sleeps berechnen
StartTime := A_TickCount                                                      ;< Startzeitpunkt merken
Progress, b1000 w1000, Bitte warten..., Druckdaten werden geladen!, Hinweis!  ;< Progress-Fenster anzeigen
SetTimer, UpdProgress, 1000                                                   ;< Timer starten
Send, ^p 																											;;Drucken
Sleep, 7000
If !WinExist("Drucken")
{
   MsgBox, 16, Fehler!, Der Druckdialog hat sich nicht geöffnet!
   SetTimer, UpdProgress, Off    ;< Timer beenden
   Progress, Off                 ;< Progress-Fenster schließen
   Return
}
Control, Check,, RICHEDIT50W1, Drucken
Sleep, 800
Send, {Backspace}
Sleep, 800
Send, 999																											;; Eingabe Anzahl Exemplare zum Drucken =999
Sleep, 800
Control, Check,, Button4, Drucken																					;; Eigenschaften auswählen
Sleep, 7000
Control, Uncheck,, Button20, Eigenschaften von Afinia L901 Label Printer											;; Maskenoptimierung deaktivieren
Sleep, 500
Control, Check,, Button10, Eigenschaften von Afinia L901 Label Printer												;; Randlos drucken aktivieren
Sleep, 500
Control, Choose,2, ComboBox1, Eigenschaften von Afinia L901 Label Printer											;; Typ auswählen (numerisch)
Sleep, 500
Control, Choose,17, ComboBox2, Eigenschaften von Afinia L901 Label Printer											;; Format auswählen (numerisch)
Sleep, 500
Control, Choose,5, ComboBox4, Eigenschaften von Afinia L901 Label Printer											;; Speed auswählen (numerisch)
Sleep, 500
Control, TabRight,, SysTabControl321, Eigenschaften von Afinia L901 Label Printer									;; Reiter "Layout" auswählen
Sleep, 500
Control, Check,, Button3, Eigenschaften von Afinia L901 Label Printer												;; Benutzerdefinierte Größe auswählen
Sleep, 500
Control, Check,, Button14, Eigenschaften von Afinia L901 Label Printer												;; Button "OK" drücken
Sleep, 500
Control, Check,, Button50, Drucken																					;; Button "Drucken" drücken
SetTimer, UpdProgress, Off    ;< Timer beenden
Progress, Off                 ;< Progress-Fenster schließen
Return																												;;Befehl Ende F2
;;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ButtonEco_Maxi:
Return
;;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ButtonFresh_Mini:
Return
;;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ButtonFresh_Midi:
Return
;;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ButtonSnackdose:
Return
;;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ButtonSnack_Roll:
Return
;;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ButtonCandyCan_XS:
Return
;;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ButtonCandyCan_Slim:
Return
;;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ButtonBonbonglas:
Return
;;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ButtonOstersixpack:																									;;OSTERSIXPACK
;;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Buttontbd:
MsgBox,, Hinweis DigiPrint, Button ist nicht belegt!
Return
;;/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
UpdProgress:
RunTime := A_TickCount - StartTime
If (RunTime > SleepTime)
   Progress, 100
Else
   Progress, % (RunTime / SleepTime) * 100
Return
Optimus Prime
Posts: 69
Joined: 04 Feb 2020, 02:47

Re: Hotkey-Programmabfolge mit Progress überlagern

05 Feb 2020, 09:54

Vielen vielen Dank just me. Es funktioniert sehr gut. Ich versteh zwar noch nicht den gesamten Syntax, aber das mit den geschweiften Klammern nun umso mehr :)
Die reinste Form des Wahnsinns ist es, alles so zu belassen wie es ist und zu hoffen, dass sich etwas ändert [Albert Einstein]
just me
Posts: 9424
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Hotkey-Programmabfolge mit Progress überlagern

05 Feb 2020, 10:13

Wenn Du Fragen zum Code hast, stelle sie (nachdem Du versucht hast, in der Hilfe eine Antwort zu finden ;) ).

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 29 guests