Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

Skript reagiert nicht richtig


  • Please log in to reply
15 replies to this topic
vltier
  • Members
  • 47 posts
  • Last active: Nov 06 2017 08:06 PM
  • Joined: 09 Apr 2015

Servus!

 

f1::
ImageSearch, foundX, foundY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, C:\Pfad\Dateiname.png
If(ErrorLevel == 0){
Click, %foundX%, %foundY%
}else{
MsgBox, Image not found.
}

send, e

return

 

funktioniert bei mir für den blauen Bereich einwandfrei. Der rot eingeschobene funtioniert nicht (keine sichtbare Reaktion). Hat jemand eine Idee, was ich ändern muss?



Rohwedder
  • Members
  • 130 posts
  • Last active: Nov 10 2015 03:43 PM
  • Joined: 06 Feb 2013

Wenn du A_ScreenWidth und A_ScreenHeight verwendest, solltest du unbedingt mit CoordMode auf Bildschirmkoordinaten umschalten. ImageSearch und Click verwenden ansonsten Fensterkoordinaten.

Das mit dem blauen und rot eingeschobenen Bereich kann ich natürlich nicht nachvollziehen.

Von der Abfrage „If (ErrorLevel == 0)“ rate ich generell ab. ErrorLevel könnte auch einfach leer sein.

 

Funktionierts so?

CoordMode, Pixel, Screen
f1::
ImageSearch, foundX, foundY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, C:\Pfad\Dateiname.png
If !ErrorLevel
	Click, %foundX%, %foundY%
else
	MsgBox, Image not found.
send, e
return


vltier
  • Members
  • 47 posts
  • Last active: Nov 06 2017 08:06 PM
  • Joined: 09 Apr 2015

Danke! Ist nun alles umgesetzt, die Suche und der Click funktionieren nach wie vor, aber send e nach wie vor nicht.

 

Mit dem "Click" öffnet sich der Autohotkey-Button in der Taskleiste und das e soll mir dann das Editieren ermöglichen. Händisch klappt das ohne Probleme.



gregster
  • Members
  • 283 posts
  • Last active: Nov 09 2015 03:08 AM
  • Joined: 19 Mar 2009

Vielleicht musst du eine kleine Pause mittels 'Sleep' zwischen Klick und 'e' einbauen...?



Rohwedder
  • Members
  • 130 posts
  • Last active: Nov 10 2015 03:43 PM
  • Joined: 06 Feb 2013

Bei mir funktioniert ImageSearch im Tray nicht. Aber zu deinem eigentlichen Anliegen habe ich eine Lösung:

f1::Edit


vltier
  • Members
  • 47 posts
  • Last active: Nov 06 2017 08:06 PM
  • Joined: 09 Apr 2015

ist probiert und seltsamerweise wird die e-Eingabe erst aktiviert, wenn ich es händisch (mit unterschiedlichen Wartezeiten) schon ausgelöst habe. Somit wird der Buchstabe 'e' (auch mit der sleep-Verzögerung) in das bereits editierbereite Skript eingefügt.

 

Vielleicht noch eine Idee?



vltier
  • Members
  • 47 posts
  • Last active: Nov 06 2017 08:06 PM
  • Joined: 09 Apr 2015

@rohwedder, :) Dankeschön (!!!) damit ist der konkrete Fall gelöst.

 

Da die generelle Problematik des Öfteren auf mich zukommt, wäre es aber trotzdem schön, wenn jemand noch einen hilfreichen Ansatz beisteuern könnte.



Rohwedder
  • Members
  • 130 posts
  • Last active: Nov 10 2015 03:43 PM
  • Joined: 06 Feb 2013

Hat mich interessiert. So gehts zur Not auch:

CoordMode, Pixel, Screen
F1::
WinGetPos, X, Y, Breite, Höhe, ahk_class Shell_TrayWnd
ImageSearch, foundX, foundY, X, Y, X + Breite, Y + Höhe, C:\Pfad\Dateiname.png
If ErrorLevel
{
	MsgBox, Image not found
	Return
}
Click, Right, %foundX%, %foundY%
Sleep, 200
Send, e
Return


vltier
  • Members
  • 47 posts
  • Last active: Nov 06 2017 08:06 PM
  • Joined: 09 Apr 2015

hm, geht bei mir leider auch nicht. 'send, e' wurde erst wieder (mit der Verzögerung aus sleep) ausgeführt, nachdem das 'e' bereits händisch eingeben wurde. Ich probiere das morgen auch noch einmal auf dem Dienst-PC.



Rohwedder
  • Members
  • 130 posts
  • Last active: Nov 10 2015 03:43 PM
  • Joined: 06 Feb 2013

Der Rechtsklick wird im Script auf die linke obere Ecke vom gefundenen png gemacht. Wenn das png zu groß ist, kann sich an dieser Stelle das Kontextmenü vom Tray-Icon evtl. nicht öffnen. Lieber nur einen mittigen Teil des Icons als png verwenden oder den Rechtsklick etwas weiter in Richtung rechts unten machen lassen, vorzugsweise auf Iconmitte (foundx und foundy vor dem Rechtsklick entspechend erhöhen).



vltier
  • Members
  • 47 posts
  • Last active: Nov 06 2017 08:06 PM
  • Joined: 09 Apr 2015
Das war hilfreich für mehrere andere auch angefasste Sachen.

Nur bei dem hier immer genutzten Beispiel öffnet sich das Kontextmenü regelmäßig ohne Probleme und 'send e' wird dann schlichtweg nicht ausgeführt. Erst nach einer händischen Eingabe läuft das Skript weiter und wirft das noch ausstehende 'e' aus.

Rohwedder
  • Members
  • 130 posts
  • Last active: Nov 10 2015 03:43 PM
  • Joined: 06 Feb 2013

Bei mir funktioniert es jetzt auch nicht mehr! Hatte versuchsweise auf den normalen Maus-Doppelklick-Modus umgestellt und dann das!

Das Skript führt den Rechtsklick noch aus (Kontext wird geöffnet) und wartet dann wohl auf irgendetwas.

Ein eingefügtes „Pause“ in der nächsten Skripzeile wird erst ausgeführt (sieht man am Wechsel des Trayicon), wenn in ein anderes Fenster gewechselt wird. Das Rückkehren in den von mir bevorzugten Maus-Einfachklick-Modus half nicht. Sieht nach einem Bug aus - AutoHotkey oder Windows 7, keine Ahnung! MouseClick, Right, %foundX%, %foundY% macht das gleiche.



vltier
  • Members
  • 47 posts
  • Last active: Nov 06 2017 08:06 PM
  • Joined: 09 Apr 2015
Ganz schön viel Mühe. Schade! Mit Windows XP funktioniert es auch nicht.

just me
  • Members
  • 1496 posts
  • Last active: Nov 03 2015 04:32 PM
  • Joined: 28 May 2011

Moin,

 

wenn das Traymenü geöffnet wird, wird das zugehörige Skript von AHK automatisch angehalten. Das ist ein Feature, kein Bug.


Prefer ahkscript.org for the time being.


vltier
  • Members
  • 47 posts
  • Last active: Nov 06 2017 08:06 PM
  • Joined: 09 Apr 2015

Erhellend! Dann müsste es von der Systematik also bei anderen Programmen funktionieren. Danke an alle Teilnehmer!

 

Nachtrag: ein Test hat alles bestätigt!