Hallo Zusammen
Ich bin auf der Suche nach einem Programm welches ich per Batch starten kann, welches mir dann ein Programm startet ein Passwort übergibt.. dann ein paar Tastenbefehle ausgibt um diverse Funktionen in diesem Programm zu starten
Kann ich AutoHotKey dafür missbrauchen?
LG
Frank
Programm steuern Topic is solved
Moderator: jNizM
-
- Posts: 264
- Joined: 09 Mar 2019, 01:52
- Location: Germany
- Contact:
Re: Programm stuern
nicht nur missbrauchen. Dafür ist es gemacht.
Re: Programm stuern
Oh fein...
Ich gug mal ob ich was ähnliches finde
Sonst melde ich noch nochmal
LG
Ich gug mal ob ich was ähnliches finde
Sonst melde ich noch nochmal
LG
Re: Programm stuern
Hmmm
Ich hab jetzt mal an Beispielen was zusammen gebastelt
So richtig läuft es nicht
run C:\PR_DE\PR.exe
#IfWinActive ahk_class WindowsForms10.Window.8.app.0.378734a
controlsend, WindowsForms10.EDIT.app.0.378734a1 ,12345
Wenn ich das script doppelklicke startet tatsächlich das Programm!
Das Programm ruft dann ein Loginfenster auf und landet auf dem Passwort feld
In Zeile 2 soll es das Fenster identifizieren (keine Ahnung ob ich das nun brauche)
In Zeile drei sollte er der Wert 12345 in das Feld schreiben
Passiert natürlich nicht
LG
Frank
Ich hab jetzt mal an Beispielen was zusammen gebastelt
So richtig läuft es nicht
run C:\PR_DE\PR.exe
#IfWinActive ahk_class WindowsForms10.Window.8.app.0.378734a
controlsend, WindowsForms10.EDIT.app.0.378734a1 ,12345
Wenn ich das script doppelklicke startet tatsächlich das Programm!
Das Programm ruft dann ein Loginfenster auf und landet auf dem Passwort feld
In Zeile 2 soll es das Fenster identifizieren (keine Ahnung ob ich das nun brauche)
In Zeile drei sollte er der Wert 12345 in das Feld schreiben
Passiert natürlich nicht
LG
Frank
Re: Programm stuern
Probiers mal so:
(ggf. - wenn das Programm mit erweiterten Rechten läuft - musst du das Skript 'als Administrator ausführen')
Code: Select all
run C:\PR_DE\PR.exe
WinWaitActive, ahk_class WindowsForms10.Window.8.app.0.378734a
ControlSend, WindowsForms10.EDIT.app.0.378734a1 ,12345, A
Re: Programm steuern
nöööö
Aber vor ich Schimpfe bekomme.
"Code: Select all" gehört nicht dazu... oder ?
Oder kann das ein Zeit Problem sein ? Es dauert recht lange bis der Focus auf dem Eingabefeld fürs Passwort landet
Aber es bleibt leer der Wert "12345" kommt nicht an!
was bedeuted das "A" ? am Ende
LG
Aber vor ich Schimpfe bekomme.
"Code: Select all" gehört nicht dazu... oder ?
Oder kann das ein Zeit Problem sein ? Es dauert recht lange bis der Focus auf dem Eingabefeld fürs Passwort landet
Aber es bleibt leer der Wert "12345" kommt nicht an!
was bedeuted das "A" ? am Ende
LG
Re: Programm steuern
Nee, das gehört zu der feschen Codebox (die du durch [code][/code]-Tags um den Code herum benutzen kannst; das wäre übrigens auch dir für zukünftige Posts zu empfehlen) und macht genau das, was draufsteht: Wenn du "Select All" klickst, wird der Code in der Codebox ausgewählt/markiert (zum Kopieren).muemmi wrote: ↑29 Apr 2019, 13:34"Code: Select all" gehört nicht dazu... oder ?
ControlSend kann schon mal tricky sein und funktioniert auch nicht zwangsläufig mit jedem Programm.
Der dritte Parameter von ControlSend ist WinTitle: A steht für das aktive Fenster (angenommen, das Programmfenster ist wirklich (noch) aktiv zu dem Zeitpunkt). ahk_class WindowsForms10.Window.8.app.0.378734a ist hier vielleicht besser.was bedeuted das "A" ? am Ende
WinWaitActive wartet eigentlich bis das entsprechende Fenster aktiv ist - vielleicht aber ist das Eingabefeld dann noch nicht bereit...Oder kann das ein Zeit Problem sein ? Es dauert recht lange bis der Focus auf dem Eingabefeld fürs Passwort landet
denn Fokus sollte eigentlich nicht notwendig sein, da du direkt an das Kontrollelement sendest (falls der Name stimmt und das Programm mit ControlSend zusammenarbeitet). Du könntest natürlich zu Testzwecken nen Sleep 2000 (2000 ms = 2 Sekunden) o. ä. dazwischenstellen.
Oder probier mal
Code: Select all
run C:\PR_DE\PR.exe
WinWaitActive, ahk_class WindowsForms10.Window.8.app.0.378734a ; alternativ WinWait
msgbox
return
Space::ControlSend, WindowsForms10.EDIT.app.0.378734a1 ,12345, ahk_class WindowsForms10.Window.8.app.0.378734a
Esc::ExitApp ; drücke Escape-Taste zum Beenden
Wenn nicht, funktioniert es, wenn du das Passwortfeld per Hand auswählst und dann Space drückst, mit
Space::Send, 12345 ?
Re: Programm steuern
Also:
Die Message Box kam.. wartete aber nicht auf irgendwas! Sprich die kam auch schon vor dem Login-Fenster!
Ich hab mir mit dem Sleep geholfen!
Das ControlSend schreibt auch schön seine Wert rein !
Ich such jetzt mal nach betätigen des "Login" Buttons
Die Message Box kam.. wartete aber nicht auf irgendwas! Sprich die kam auch schon vor dem Login-Fenster!
Ich hab mir mit dem Sleep geholfen!
Das ControlSend schreibt auch schön seine Wert rein !
Ich such jetzt mal nach betätigen des "Login" Buttons
run C:\ELS_V55R6_DE\ELS5.exe
WinWaitActive, ahk_class WindowsForms10.Window.8.app.0.378734a ; geht aber nicht
Sleep 8000
ControlSend, WindowsForms10.EDIT.app.0.378734a1 ,12345, ahk_class WindowsForms10.Window.8.app.0.378734a
Esc::ExitApp ; drücke Escape-Taste zum Beenden Lass ich mal zum basteln drin
Re: Programm steuern
Hmm, merkwürdig, aber wenn es ein eigenes Login-Fenster gibt, dann hat es wahrscheinlich eine andere ahk_class als das Hauptfenster des Programms (und du schaust bisher wahrscheinlich nach letzterem mit Winwait...?). Du müsstest dein Skript dann auf dieses Login-Fenster warten lassen, statt auf das Hauptfenster.
Welche Informationen gibt WindowSpy.ahk über den Login-Button?
Neben ControlClick könntest du ja auch ein {Enter} mit ControlSend schicken...
Welche Informationen gibt WindowSpy.ahk über den Login-Button?
Neben ControlClick könntest du ja auch ein {Enter} mit ControlSend schicken...
Re: Programm steuern
Was meinst du ? .. das .ahk versteh ich jetzt nicht!Welche Informationen gibt WindowSpy.ahk über den Login-Button?
Wenn ich auf den LOGIN Butto drücke hab ich natürlich diverse andere Infos
Mir ist es aber noch nicht gelungen Hier ein Bild rein zu bekommen... wie geht das ?
Aktueller Script!
run C:\ELS_V55R6_DE\ELS5.exe
WinWaitActive, ahk_class WindowsForms10.Window.8.app.0.378734a ; ahk_class des Login Fensters
Sleep 8000
ControlSend, WindowsForms10.EDIT.app.0.378734a1 ,12345, ahk_class WindowsForms10.Window.8.app.0.378734a ; das tut es
Sleep 1000
ControlClick, &Login, WindowsForms10.BUTTON.app.0.378734a2 ; Das ist die ClassNN des Buttons
Esc::ExitApp ; drücke Escape-Taste zum Beenden Lass ich mal zum basteln drin
Re: Programm steuern
hier ein primitives program für Internet login in gmx email
warte bis url richtig aufgebaut ist und denn mit LeftButton ins erste Eingabefeld klicken
warte bis url richtig aufgebaut ist und denn mit LeftButton ins erste Eingabefeld klicken
Code: Select all
#warn
setworkingdir,%a_scriptdir%
Settitlematchmode,2
SetKeyDelay,20,20
AA=garry.uvedkommendingenadgang@gmx.ch ;-- Username
BB=1234567890abcd ;-- Password
cc=https://www.gmx.ch/ ;-- URL to start
dd:="GMX:" ;-- wait for this in title
Run,%cc%,,max
WinWait,%dd%
IfWinNotActive ,%dd%,,WinActivate,%dd%
WinWaitActive,%dd%
;- hier klicken wenn alles aufgebaut ist
KeyWait, LButton, D
SetKeyDelay,40,40
sleep,1500
send,%aa%
sleep,900
send,{TAB}
send,%BB%
sleep,500
send,{TAB}
sleep,500
send,{ENTER}
ExitApp
esc::exitapp
Re: Programm steuern
hmmmm
sicher das das Post jetzt passt ?
LG
sicher das das Post jetzt passt ?
LG
Re: Programm steuern
Window Spy = WindowSpy.ahk - das Hilfsprogramm kennst du ja offenbar; man kann es bspw. über das Kontextmenü eines Skript-Icons starten, aber eigentlich ist es auch nur ein AutoHotkey-Skript, das sich im AHK-Installationsverzeichnis befindet.
Im "Full Editor & Preview"-Modus unter das Editierfeld scrollen, dann "Attachments" klicken > "Add files" > ggf. kurz warten, bis das Bild hochgeladen ist; schließlich mit "Place inline" entsprechende Tags in das Editierfeld einfügen lassen - dann zur Kontrolle Vorschau/Preview angucken (und Tags ggf. dahin verschieben, wo man sie eigentlich hinhaben wollte ). Ich meine, früher hätte auch teilweise Drag+drop funktioniert (wie auch der Text in untenstehender Grafik andeutet), aber geht derzeit bei mir nicht (mehr) .
Übrigens, für die schönere Darstellung von Code gibt es die [code][/code]-Tags. Zur Zeit missbrauchst du die [quote][/quote]-Tags für deinen Code. Für die Code-Tags gibt es auch einen Button im erweiterten Editor (rechts neben den Quote-Tags); dann braucht man nicht selber tippen.
Guck dir nochmal die Syntax von ControlClick an - ich meine, da passt was nicht mit deiner Zeile: Der zweite Paramter soll Wintitle sein, nicht die ClassNN des Kontrollelements (letztere wäre alternativ zum Text des Kontrollelements im ersten Parameter nutzbar).
Also eher
Code: Select all
ControlClick, &Login, ahk_class WindowsForms10.Window.8.app.0.378734a
; oder
ControlClick, WindowsForms10.BUTTON.app.0.378734a2, ahk_class WindowsForms10.Window.8.app.0.378734a
Re: Programm steuern
Genial.. es tut es.... so es wird jetzt spannend!
Ich muss jetzt auf Reiter und Unterpunkte Klicken
Ich versuch es mal
Ich muss jetzt auf Reiter und Unterpunkte Klicken
Ich versuch es mal
Re: Programm steuern
So jetzt mal ein Bild
Normalerweise würde ich jetzt mit der Maus oben auf "ELS-Line" gehen (MausKlick) und dann im Unterpunkt auf "Starten" (MausKlick)
Alternativ geht es auch mit ALT und 7 mal TAB und zweimal ENTER
Also hab ich es mal mit Controlsend versucht!
Klappt aber nicht!
Die möglichkeit mit dem ansteuern der Reiter erschließt sich mir ber jetzt noch nicht
Hier mal wie das aussieht mit "Spy" mit aktiven Fenster:
Normalerweise würde ich jetzt mit der Maus oben auf "ELS-Line" gehen (MausKlick) und dann im Unterpunkt auf "Starten" (MausKlick)
Alternativ geht es auch mit ALT und 7 mal TAB und zweimal ENTER
Also hab ich es mal mit Controlsend versucht!
Klappt aber nicht!
Die möglichkeit mit dem ansteuern der Reiter erschließt sich mir ber jetzt noch nicht
Code: Select all
run C:\ELS_V55R6_DE\ELS5.exe
WinWaitActive, ahk_class WindowsForms10.Window.8.app.0.378734a ; ahk_class des Login Fensters
Sleep 8000
ControlSend, WindowsForms10.EDIT.app.0.378734a1 ,12345, ahk_class WindowsForms10.Window.8.app.0.378734a ; das tut es
Sleep 1000
ControlClick, &Login, ahk_class WindowsForms10.Window.8.app.0.378734a
Sleep 1000
ControlSend, WindowsForms10.SysListView32.app.0.378734a1 ,{Alt}, ahk_class WindowsForms10.Window.8.app.0.378734a
Sleep 1000
ControlSend, WindowsForms10.SysListView32.app.0.378734a1 ,{Tab}, ahk_class WindowsForms10.Window.8.app.0.378734a
Sleep 1000
ControlSend, WindowsForms10.SysListView32.app.0.378734a1 ,{Tab}, ahk_class WindowsForms10.Window.8.app.0.378734a
Sleep 1000
Hier mal wie das aussieht mit "Spy" mit aktiven Fenster:
Re: Programm steuern
Moin,
ELS-Line ist anscheinend ein Eintrag im Fenstermenü. Mit etwas Glück kannst Du die Submenüeinträge wie Starten direkt mit WinMenuSelectItem ansteuern. Wenn Du in den Menüeinträgen unterstrichene Buchstaben oder das Zeichen &siehst, solltest Du auch versuchen, den Zeichen ein & voranstellen.
ELS-Line ist anscheinend ein Eintrag im Fenstermenü. Mit etwas Glück kannst Du die Submenüeinträge wie Starten direkt mit WinMenuSelectItem ansteuern. Wenn Du in den Menüeinträgen unterstrichene Buchstaben oder das Zeichen &siehst, solltest Du auch versuchen, den Zeichen ein & voranstellen.
Re: Programm steuern
Hmmm laut Doku hört sich das prima an
hab das mal so probiert:
Passiert rein Gar nichts
LG
hab das mal so probiert:
Code: Select all
run C:\ELS_V55R6_DE\ELS5.exe
WinWaitActive, ahk_class WindowsForms10.Window.8.app.0.378734a ; ahk_class des Login Fensters
Sleep 8000
ControlSend, WindowsForms10.EDIT.app.0.378734a1 ,12345, ahk_class WindowsForms10.Window.8.app.0.378734a ; das tut es
Sleep 1000
ControlClick, &Login, ahk_class WindowsForms10.Window.8.app.0.378734a
Sleep 2000
WinMenuSelectItem, ELS5 - ODBC - AKZO [DOM] , , 8& ,1&
LG
Re: Programm steuern
Moin,
Dein Code sieht eigentlich gut aus, wenn das Fenster innerhalb von 2 Sekunden nach dem Login aktiv ist. Es würde den achten Eintrag in der Menüleiste (8& = "ELS-Line") und darin den ersten Eintrag (1&) auswählen. Das klappt leider nicht immer. Der folgende Code soll prüfen, ob AHK mit Deinen Fensterkriterien an das Fenstermenü herankommt. Lass es mal laufen und berichte, was die MsgBoxen sagen.
*Ich konnte das nicht testen*
Dein Code sieht eigentlich gut aus, wenn das Fenster innerhalb von 2 Sekunden nach dem Login aktiv ist. Es würde den achten Eintrag in der Menüleiste (8& = "ELS-Line") und darin den ersten Eintrag (1&) auswählen. Das klappt leider nicht immer. Der folgende Code soll prüfen, ob AHK mit Deinen Fensterkriterien an das Fenstermenü herankommt. Lass es mal laufen und berichte, was die MsgBoxen sagen.
Code: Select all
#NoEnv
Run C:\ELS_V55R6_DE\ELS5.exe
WinWaitActive, ahk_class WindowsForms10.Window.8.app.0.378734a ; ahk_class des Login Fensters
Sleep 8000
ControlSend, WindowsForms10.EDIT.app.0.378734a1 ,12345, ahk_class WindowsForms10.Window.8.app.0.378734a ; das tut es
Sleep 1000
ControlClick, &Login, ahk_class WindowsForms10.Window.8.app.0.378734a
; Sleep 2000
; WinMenuSelectItem, ELS5 - ODBC - AKZO [DOM] , , 8& ,1&
WinWaitActive, ELS5 - ODBC - AKZO [DOM], , 2 ; Max. 2 Sekunden auf das Fenster warten.
If (ErrorLevel) ; Timeout
{
MsgBox, 16, Fehler!, Das ELS5 Fenster wurde nicht geöffnet!
}
Else
{
HWND := WinExist() ; WinWaitActive hat das 'Zuletzt Gefundene Fenster' gesetzt.
HMENU := DllCall("GetMenu", "Ptr", HWND,"UPtr")
If (HMENU = 0)
MsgBox, 16, Fehler!, Auf das Fenstermenü kann nicht zugegriffen werden!
Else
MsgBox, 0, OK!, Das Fenstermenü wurde erkannt: %HMENU%.
}
ExitApp
Re: Programm steuern
Es Kommt
Das ELS5 Fenster wurde nicht geöffnet!
Das ELS5 Fenster wurde nicht geöffnet!
Re: Programm steuern
Dann ist entweder der Fenstertitel ELS5 - ODBC - AKZO [DOM] falsch oder dioie Wartezeit ist zu kurz. Wenn das Fenster sichtbar und aktiv wird, bevor die MsgBox erscheint, ist es wahrscheinlich der Titel. Du kannst aber trotzdem mal mit
versuchen und schauen, ob das mehr Erfolg hat.
Code: Select all
WinWaitActive, ELS5 - ODBC - AKZO [DOM], , 10 ; Max. 10 Sekunden auf das Fenster warten.
Who is online
Users browsing this forum: No registered users and 16 guests