Hallo zusammen,
ich will ein Programm mit AHK öffnen und anschließend den Befehl Ctrl+u (Tastenkürzel für Upload des Programms - Arduino) an das geöffnete Fenster senden.
Mit meinem Skript funktioniert zwar das Öffnen, aber nicht das Senden des Befehls.
Ich habe mittlerweile alle Methoden von Send und auch ControlSend ausprobiert, jetzt bin ich ratlos.
Hier das Skript:
^g::Run, \\etc.... (Programm Pfad funktioniert)
Sleep, 10000
Send, ^u
return
Wäre sehr dankbar, wenn mir jemand helfen könnte.
Ich bin leider nicht wirklich erfahren mit der AHK Nutzung.
Tastenbefehle senden Topic is solved
Moderator: jNizM
Re: Tastenbefehle senden
Eine Hotkey-Definition mit mehr als einer Anweisungszeile darf keine Anweisungen in der ersten Zeile aufweisen, da der AHK-Parser sonst denkt, es würde sich um einen Einzeiler handeln und der folgende Code wird ignoriert/ist unerreichbar. Daher eher so:
Du könntest außerdem darüber nachdenken, Sleep durch andere Kommandos wie Winwait/WinActivate/etc. zu ersetzen oder zu ergänzen - und dann ggf noch ControlSend... ungefähr so:
Code: Select all
^g::
Run, \\etc.... (Programm Pfad funktioniert)
Sleep, 10000
Send, ^u
return
Code: Select all
^g::
Run notepad.exe
WinWait, ahk_exe NOTEPAD.EXE
ControlSend, Edit1, This is a line of text in the notepad window., ahk_exe NOTEPAD.EXE
return
Re: Tastenbefehle senden
Morgen,
vielen Dank erstmal an dich "gregster". Die Tipps sind auf jeden Fall sehr wichtig. Habe das Skript jetzt dementsprechend umgeschrieben.
Aber es scheint so, als ob der Tastenbefehl immer noch nicht an das Fenster gesendet wird.
Hast du zufällig noch eine Ahnung woran das liegen könnte?
^g::
Run, \\Work\avee\Software\Arduino\New1\New1.ino
WinWait, ahk_exe javaw.exe
ControlSend, ^u, ahk_exe javaw.exe
return
Habe natürlich auch die andere Version ausprobiert und auch WinActivate.
vielen Dank erstmal an dich "gregster". Die Tipps sind auf jeden Fall sehr wichtig. Habe das Skript jetzt dementsprechend umgeschrieben.
Aber es scheint so, als ob der Tastenbefehl immer noch nicht an das Fenster gesendet wird.
Hast du zufällig noch eine Ahnung woran das liegen könnte?
^g::
Run, \\Work\avee\Software\Arduino\New1\New1.ino
WinWait, ahk_exe javaw.exe
ControlSend, ^u, ahk_exe javaw.exe
return
Habe natürlich auch die andere Version ausprobiert und auch WinActivate.
Re: Tastenbefehle senden
Im Zweifel und wenn ControlSend nicht funktioniert (was leider vorkommt) würde ich es erst einmal mit Send und aktiviertem Fenster probieren... Edit: Hmm, wenn ich dich richtig verstehe, funktioniert Send auch nicht. Läuft das Zielprogramm zufällig mit erweiterten Rechten? Dann starte dein Skript 'als Administrator'.
Ich sehe allerdings einen Syntaxfehler in dieser Zeile:
Der erste Parameter bezeichnet das Steuerelement, an das man senden will (kann unter Umständen auch leer bleiben, siehe Doku) - die zu sendenden Zeichen gehören dagegen in den zweiten Parameter (bei ControlSend! Achtung: Send ist da anders, da wäre es der erste Parameter). Syntax:
Aber vielleicht funktioniert schon das:Beachte dabei das zusätzliche Komma.
Java-Programme sind allerdings nicht ideal für die AHK-Automatisierung und meine Erfahrung damit liegt länger zurück. Es gibt allerdings noch ein "Java Access Bridge" genanntes Interface, wenn ich mich richtig erinnere, das manchmal helfen konnte bei der Automatisierung von Java-Programmmen... ich weiß allerdings nicht, ob das in diesem Fall relevant, hilfreich oder notwendig ist.
Ist das Java-Programm, das Du nutzt, frei bzw. zum Testen erhältlich?
Ich sehe allerdings einen Syntaxfehler in dieser Zeile:
Code: Select all
ControlSend, ^u, ahk_exe javaw.exe
Nun sind Steuerelemente in Java, soweit ich weiß, nicht dem Windows-Standard entsprechend und daher vermutlich nicht durch AHK's Window Spy identifizierbar oder durch ControlSend unmittelbar ansprechbar...https://www.autohotkey.com/docs/commands/ControlSend.htm wrote:ControlSend [, Control, Keys, WinTitle, WinText, ExcludeTitle, ExcludeText]
Aber vielleicht funktioniert schon das:
Code: Select all
ControlSend, , ^u, ahk_exe javaw.exe
Java-Programme sind allerdings nicht ideal für die AHK-Automatisierung und meine Erfahrung damit liegt länger zurück. Es gibt allerdings noch ein "Java Access Bridge" genanntes Interface, wenn ich mich richtig erinnere, das manchmal helfen konnte bei der Automatisierung von Java-Programmmen... ich weiß allerdings nicht, ob das in diesem Fall relevant, hilfreich oder notwendig ist.
Ist das Java-Programm, das Du nutzt, frei bzw. zum Testen erhältlich?
Re: Tastenbefehle senden
Ich hab das jetzt alles ausprobiert bzw. jede mögliche Zusammenstellung des Skripts, als auch das Starten als Administrator.
Leider alles erfolglos. Ich vermute jetzt mal stark, dass du mit deiner Annahme zwecks der Java Steuerelemente richtig liegst.
Danke noch für die Aufklärung bezüglich des Syntaxfehlers.
Ja das Porgramm ist frei erhältlich unter: www.arduino.cc
Mit der dazu gehörigen "NeoPixel" Bibliothek welche man aus dem Programm selbst laden kann.
Es handelt sich um ein Programm mit welchem man LEDs ansteuern kann.
Vielleicht bringt mir die von dir angesprochene "Java Access Bridge" ja den gewünschten Erfolg.
Ist auf jeden Fall einen Versuch wert.
Vielen Dank nochmal
Leider alles erfolglos. Ich vermute jetzt mal stark, dass du mit deiner Annahme zwecks der Java Steuerelemente richtig liegst.
Danke noch für die Aufklärung bezüglich des Syntaxfehlers.
Ja das Porgramm ist frei erhältlich unter: www.arduino.cc
Mit der dazu gehörigen "NeoPixel" Bibliothek welche man aus dem Programm selbst laden kann.
Es handelt sich um ein Programm mit welchem man LEDs ansteuern kann.
Vielleicht bringt mir die von dir angesprochene "Java Access Bridge" ja den gewünschten Erfolg.
Ist auf jeden Fall einen Versuch wert.
Vielen Dank nochmal
Re: Tastenbefehle senden
Hi Jules, ich hab mal die Arduino Desktop IDE 1.8.9 runtergeladen. Ich nehme an, das ist das Programm - jedenfalls gibt es hier den Shortcut Strg+u für 'Hochladen'.
Ich hatte offenbar Erfolg, sowohl mit Send als auch mit ControlSend (allerdings in Kombination mit ControlFocus). Dieser Test funktioniert bei mir:
Wie so häufig funktioniert ControlSend, wenn das Fenster inaktiv ist. Allerdings nicht, wenn das Fenster minimiert ist.
Warum scheitert's also bei Dir? Vielleicht fehlt doch das richtige Timing bei deinem Send und das richtige Fenster ist nicht aktiv.
Und bei ControlSend? Nunja, ohne ControlFocus funktioniert es bei mir auch nicht... vielleicht hast du aber auch mehrere Fenster offen, die auf die Bedingung ahk_exe javaw.exe passen. Dann müsste man es mit einer anderen Variante für WinTitle probieren.
Aber probier doch erstmal die beiden Hotkeys a und b im Code oben... falls Du das noch liest (Registrieren im Forum hätte seine Vorteile )
Ich hatte offenbar Erfolg, sowohl mit Send als auch mit ControlSend (allerdings in Kombination mit ControlFocus). Dieser Test funktioniert bei mir:
Code: Select all
a::Send ^u ; drücke 'a', wenn Window aktiv
b:: ; drücke 'b', auch wenn Window inaktiv (aber nicht minimiert)
ControlFocus, , ahk_exe javaw.exe
Controlsend, , ^u, ahk_exe javaw.exe
return
Warum scheitert's also bei Dir? Vielleicht fehlt doch das richtige Timing bei deinem Send und das richtige Fenster ist nicht aktiv.
Und bei ControlSend? Nunja, ohne ControlFocus funktioniert es bei mir auch nicht... vielleicht hast du aber auch mehrere Fenster offen, die auf die Bedingung ahk_exe javaw.exe passen. Dann müsste man es mit einer anderen Variante für WinTitle probieren.
Aber probier doch erstmal die beiden Hotkeys a und b im Code oben... falls Du das noch liest (Registrieren im Forum hätte seine Vorteile )
Re: Tastenbefehle senden
Hi gregster,
ich habe das grade probiert und es funktioniert
Mir fällt ein Stein vom Herzen...
Ich werd mich auf jeden Fall noch registrieren, wird wohl nicht das einzige Mal sein, dass ich Hilfe brauche.
Vielen vielen Dank für deine Mühe.
ich habe das grade probiert und es funktioniert
Mir fällt ein Stein vom Herzen...
Ich werd mich auf jeden Fall noch registrieren, wird wohl nicht das einzige Mal sein, dass ich Hilfe brauche.
Vielen vielen Dank für deine Mühe.
Who is online
Users browsing this forum: No registered users and 1 guest