Page 2 of 2

Re: Drucker ansteuern über GUI  Topic is solved

Posted: 15 May 2020, 03:55
by Optimus Prime
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

Re: Drucker ansteuern über GUI

Posted: 15 May 2020, 04:19
by gregster
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.

Re: Drucker ansteuern über GUI

Posted: 15 May 2020, 04:26
by gregster
Da war ein copy/paste-Fehler im Code, sorry.

Re: Drucker ansteuern über GUI

Posted: 15 May 2020, 04:31
by Optimus Prime
Alles gut. Den Button habe ich korrigiert. Leider wird nun der Befehl nicht ausgeführt.

Re: Drucker ansteuern über GUI

Posted: 15 May 2020, 04:40
by gregster
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

Re: Drucker ansteuern über GUI

Posted: 15 May 2020, 04:42
by gregster
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).

Re: Drucker ansteuern über GUI

Posted: 15 May 2020, 04:52
by Optimus Prime
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.

Re: Drucker ansteuern über GUI

Posted: 15 May 2020, 04:54
by gregster
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...