Drucker ansteuern über GUI Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

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

Re: Drucker ansteuern über GUI  Topic is solved

15 May 2020, 03:55

gregster wrote:
15 May 2020, 03:51
Optimus Prime wrote:
15 May 2020, 03:40
Jetzt wird die IP über Chrome geöffnet. Fehlt noch die Ansteuerung und not visible wäre ein Traum :)
Ah gut, dann probier erstmal

Code: Select all

Page.Evaluate("document.getElementById('ui_btn_2_1').click()")
einzufügen, unter Page.WaitForLoad().
Das funktioniert und ich bin echt begeistert. Wenn das jetzt noch im Hintergund läuft wäre es super :D

Aktueller Stand:

Code: Select all

#NoEnv
SetBatchLines, -1
SetTitleMatchMode 2
#Include Chrome.ahk											; https://www.autohotkey.com/boards/viewtopic.php?f=6&t=42890

url := "http://192.168.120.176"							; füge deine IP ein

; --- Create a new Chrome instance ---
FileCreateDir, ChromeProfile										; creates a profile subdirectory in current folder
ChromeInst := new Chrome("ChromeProfile")
winwait, - Google Chrome	

; --- Connect to the page ---
if !(Page := ChromeInst.GetPage( , ,  "fnCallback" ))		; connect to callback function 
{
	MsgBox, Could not retrieve page!
	ChromeInst.Kill()
}
else
	Page.WaitForLoad()

Page.Call("Page.navigate", {"url": url})			; Navigate to url
Page.WaitForLoad()
Page.Evaluate("document.getElementById('ui_btn_2_1').click()")

return

Esc::ExitApp
Die reinste Form des Wahnsinns ist es, alles so zu belassen wie es ist und zu hoffen, dass sich etwas ändert [Albert Einstein]
gregster
Posts: 9001
Joined: 30 Sep 2013, 06:48

Re: Drucker ansteuern über GUI

15 May 2020, 04:19

Dann probier doch mal bitte das hier.
(WinWait ist nun raus, da kein sichtbares Window existiert; ein zusätzlicher headless-Parameter 👻; ein abschließender Kill()-Befehl, um die Chrome-Instanz nach getaner Arbeit zu schließen).

Code: Select all

#NoEnv
SetBatchLines, -1
#Include Chrome.ahk											

url := "http://192.168.120.176"							

; --- Create a new Chrome instance ---
FileCreateDir, ChromeProfile										; creates a profile subdirectory in current folder
ChromeInst := new Chrome("ChromeProfile", , "--headless")

; --- Connect to the page ---
if !(Page := ChromeInst.GetPage( ) )		
{
	MsgBox, Could not retrieve page!
	ChromeInst.Kill()
}
else
	Page.WaitForLoad()

Page.Call("Page.navigate", {"url": url})			; Navigate to url
Page.WaitForLoad()

Page.Evaluate("document.getElementById('ui_btn_2_1').click()")
sleep 5000
ChromeInst.Kill()
return

Esc::ExitApp
Das sleep 5000 sollte hoffentlich lang genug sein (vermutlich ginge es kürzer), bevor die Chrome-Instanz nach dem Klick geschlossen wird (eine einzige Instanz öffnet immer eine ganze Menge von Prozessen - am besten checkst du mal im Taskmanager, ob die alle zugehen; hier scheint's zu klappen). Jetzt kannst du es natürlich, nach Belieben, in einen Hotkey umwandeln oder mit einem Button verknüpfen.

Viel Erfahrung mit dem headless-Modus von Chrome hab ich nicht... wenn Tempo wichtig wäre, wäre zu überlegen, ob man nicht zum Skriptstart eine Chrome-Instanz im Hintergrund startet und diese immer wiederverwendet, anstatt sie zu schließen und immer wieder neu zu erstellen. :think: (natürlich hat man dann die ganze Zeit diese Prozesse am laufen, allerdings ohne Chrome-GUI). Aber keine Ahnung, wie stabil das wäre. Das müsste man mal richtig testen.

Was den Internet Explorer angeht, bin ich allerdings ratlos (in Chrome.ahk werkelt eigentlich auch ein ActiveX-IE-Element als Hilfsmittel - das scheint dann wohl zu funktionieren, aber das hat wahrscheinlich andere Einstellungen als der normale COM-IE)

Edit: Ups, hatte ne falsche Button-ID im Code - nun behoben.
gregster
Posts: 9001
Joined: 30 Sep 2013, 06:48

Re: Drucker ansteuern über GUI

15 May 2020, 04:26

Da war ein copy/paste-Fehler im Code, sorry.
Optimus Prime
Posts: 69
Joined: 04 Feb 2020, 02:47

Re: Drucker ansteuern über GUI

15 May 2020, 04:31

Alles gut. Den Button habe ich korrigiert. Leider wird nun der Befehl nicht ausgeführt.
Die reinste Form des Wahnsinns ist es, alles so zu belassen wie es ist und zu hoffen, dass sich etwas ändert [Albert Einstein]
gregster
Posts: 9001
Joined: 30 Sep 2013, 06:48

Re: Drucker ansteuern über GUI

15 May 2020, 04:40

Hm, das ist natürlich blöd. Dann wird die Seite wahrscheinlich nicht richtig geladen im headless-Modus.
Pfff... dann kommen wir hier vielleicht nicht weiter, zumindest nicht headless. :cry:

LuckyJoe's Vorschlag wäre ja vielleicht alternativ gangbar. Könnt man ja auch über AHK steuern, falls da das richtige dabei sein sollte.
LuckyJoe wrote:
14 May 2020, 02:19
ist zwar kein AHK, aber vielleicht hilft dir die Ansteuerung per Batch? Link
gregster
Posts: 9001
Joined: 30 Sep 2013, 06:48

Re: Drucker ansteuern über GUI

15 May 2020, 04:42

gregster wrote:
15 May 2020, 04:40
Dann wird die Seite wahrscheinlich nicht richtig geladen im headless-Modus.
Aber eigentlich komisch - in dem Fall hätte ich eigentlich eine Fehlermeldung erwartet (über ein unbekanntes Seitenelement).
Optimus Prime
Posts: 69
Joined: 04 Feb 2020, 02:47

Re: Drucker ansteuern über GUI

15 May 2020, 04:52

Also ich danke dir an dieser Stelle schon einmal für deine Mühe. Um das Thema jetzt nicht unnötig weiter aufzublasen, werde ich das funktionierende Visible-Skript in das GUI einbauen.
Das hilft auf jeden Fall schonmal enorm weiter. Vielen vielen Dank und ein schönes We wünsche ich dir.
Die reinste Form des Wahnsinns ist es, alles so zu belassen wie es ist und zu hoffen, dass sich etwas ändert [Albert Einstein]
gregster
Posts: 9001
Joined: 30 Sep 2013, 06:48

Re: Drucker ansteuern über GUI

15 May 2020, 04:54

Kein Problem, gern geschehen. Aber schade, dass das nicht funktioniert hat.
Vielleicht finde ich noch mehr raus über den headless-Modus. Ich werde auf jeden Fall noch etwas testen am Wochenende.

Edit: Vielleicht kann man das verbundene Skript auch ohne gerenderten Button starten. :think: In einer ruhigen Stunde...

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 69 guests