Jump to content

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

Mausbewegung/Klicks durch Gui Button


  • Please log in to reply
22 replies to this topic
ruespe
  • Members
  • 567 posts
  • Last active: Dec 01 2014 07:59 PM
  • Joined: 17 Jun 2008

nnnik, benutze einen Timer. Lass die Sleep's. Du machst es ja immer schlimmer und immer komplizierter.



nnnik
  • Members
  • 1625 posts
  • Last active: Jan 24 2019 02:19 PM
  • Joined: 28 Jul 2012

Schreib es mal mit Timern um dann sehen wir wessen Code länger ist.

Meine rechnung würde so audssehen.

 

Für jeden einzelnen Befehl ein GSUB Label+ Befehl+SetTimer+return+2 Zeilen abstand Zur Übersicht 6*Befehlsanzahl Zeilen

Dann Timer abbrechen.  1 Zeilen

Da anderes System Deaktivierung von Knöpfen früher oder später nötig. +4 Zeilen

Kein Loop und Kein Stop ~-10 Zeilen

Die beiden Funktionen nicht Notwendig. -16 Zeilen

Die Sleeps und die Mouseclicks schon mit inbegriffen -2*Befehlsanzahl Zeilen

 

4*Befehlsanzahl-11 Zeilen ;Befehlsanzahl umfasst nur die Mouseclicks

Befehlsanzahl>2.9 d.h. 4*Befehlsanzahl-11 Zeilen>0 d.h. ist deine Version länger.


Visit the new forum ahkscript.org.

http://ahkscript.org


nnnik
  • Members
  • 1625 posts
  • Last active: Jan 24 2019 02:19 PM
  • Joined: 28 Jul 2012

Wenn du es nicht hinbekommst schreib ich es dir


Visit the new forum ahkscript.org.

http://ahkscript.org


Marshall666
  • Members
  • 45 posts
  • Last active: May 16 2013 04:03 PM
  • Joined: 09 Mar 2013

Woow, erstmal vielen Dank für diese äußert guten Hilfestellungen nnnik!

Da dies meine erste "Programmiersprache" ist die ich erlerne kahm ich nicht auf gewisse Schlussfolgerungen die offenbar aus deinem Text ersichtlich waren/sind, sorry dafür! ;(

Wie gesagt ich bin noch so ZIEMLICH am Anfang was das ganze angeht aber ich habe sehr viel Interesse noch mehr zu leren! Mein Interesse ist auf jeden fall geweckt, und erst recht nachdem ich auf dieses deutsche Forum hier gestoßen bin ich werde erstmal versuchen das umzusetzen was Du meinst! Mal schauen aber erst einmal bedanke ich mich recht herzlich bei dir! Und natürlich ruespe für seine Presenz,  ..dem Thread aufmerksamkeit zu schenken was ja auch nicht selbstverständlich ist!

 

Aber ruespe:

Wenn Du meinst dein Beispiel ist einfacher zu verstehen dann imer her damit! ;)



ruespe
  • Members
  • 567 posts
  • Last active: Dec 01 2014 07:59 PM
  • Joined: 17 Jun 2008

Anders als nnnik (dessen Bemühungen im Forum ich aber durchaus anerkenne) sehe ich meine "Tätigkeit" hier mehr als "Hilfe zur Selbsthilfe". Fertigen Code poste ich nur in Ausnahmefällen. Wenn du dir die Hilfe zu SetTimer durchgelesen hast und dich an einer Lösung versuchst, will ich dir bei Problemen gern weiter helfen. Aber Eigeninitiative halte ich für sehr notwendig, denn nur so lernt man AHK, nicht dadurch, dass andere den Code schreiben (okay, manchmal kann man auch daraus lernen, aber die Basics sollte man sich selbst erarbeiten).



nnnik
  • Members
  • 1625 posts
  • Last active: Jan 24 2019 02:19 PM
  • Joined: 28 Jul 2012

@Ruespe

Anders als nnnik (dessen Bemühungen im Forum ich aber durchaus anerkenne) sehe ich meine "Tätigkeit" hier mehr als "Hilfe zur Selbsthilfe". Fertigen Code poste ich nur in Ausnahmefällen. Wenn du dir die Hilfe zu SetTimer durchgelesen hast und dich an einer Lösung versuchst, will ich dir bei Problemen gern weiter helfen. Aber Eigeninitiative halte ich für sehr notwendig, denn nur so lernt man AHK, nicht dadurch, dass andere den Code schreiben (okay, manchmal kann man auch daraus lernen, aber die Basics sollte man sich selbst erarbeiten).

 

Das sind so ziehmlich die Grundsätze von Hilfe jeglicher Art.

Ich sehe das nicht viel anders aber im Moment ist für ihm Funktionen schreiben aber vorallem Problemlösung einfach nicht möglich. Problemlösung ist eine der wichtigsten Fähigkeiten. Man erarbeitet sie sich in einem Bereich dadurch, dass man Erfahrung sammelt und sich die Problemlösungen anderer anguckt.

 

Fertigen Code poste ich nur in Ausnahmefällen.

 

Ich poste häufig Code, der ist dann aber nicht fertig und muss noch bearbeitet werden.

Sollte ich dennoch welchen Posten dann erkläre ich etwas an ihm.

Damit, so überlass ich es dem Fragenden selber ob er sich mit der Frage ausseinander setzten will oder nicht.

Denn ist keine Wille da kann man niemals ein echtes Ergebnis erzeugen.

 

Es stimmt in letzter Zeit wird meine Hilfe etwas fahrig und häufig fehlerbehaftet.

Dass liegt aber daran, dass ich meine jetzt schon limitierte Computer Zeit aufteilen muss.

Ich versuch aber noch zu helfen wo ich kann.grin.png

 

@Topic:

Das ganze Thema Funktionen ist gar nicht mal so schwierig.

Eine Funktion ist ein Code der immer wieder aufgerufen wird.

Ähnlich wie einem GoSub oder den Funktionen die du verwendest.

Bei einer Funktion gibt es die Funktionsdefinition und den Funktionsaufruf.

Wenn man, die beidem, mit einem GoSub, vergleicht entspricht, der Funktionsaufruf, dem ausführen von GoSub:

 

Gosub, Label
Funktion()

Die FunktionsDefinition entspricht dann dem Label.

Label:
;mach was
return

Funktion()
{
;mach was
;(return (Wert)) ;nicht unbedingt benötigt.
}

Die grössten Unterschiede liegen in der Verwendung:

Man kann z.B. in den Klammern hinter der Funktion verschiedene Werte eintragen, welche sich dann als normale Variablen in der Funktion verhalten

x:=10
Msgbox % x
Function(x)

Function(nr)
{
Msgbox % nr
}

Weiterhin kann man eine Return Wert definieren.

Msgbox % "Die Antwort auf alle Fragen und alles: " Function()

Function()
{
return 21*2
}

Und ausserdem ist sie in Rechnungen einsetzbar:

Msgbox % "3*3 ist " Function()*2

Function()
{
x:=21
return x
}

 

 

 

Der wichtigste Punkt in dem was man beachten muss ist, dass Funktionen abgekapselt sind, das bedeutet alle Variablen die Ausserhalb der Funktion sind gelten als nicht definiert.

X:=10
Msgbox % Function()

Function()
{
return x
}

Jedoch gibt es Aussnahmen:

 

X:=10
Msgbox % Function()
Msgbox % Function2()

Function()
{
global ;bewirkt, dass die Funktion ihre Abkapselung aufhebt.
return x
}

Function2()
{
return A_ScriptDir ;Alle A_ Variablen sind superglobal und damit in allen Funktionen erreichbar.
}

 

Jetzt alles zusammen:

 

X:=10
Y:=13
Msgbox % Function2() Function(x,y)

Function(x,y)
{
z:=3
Loop,% x
 If y-=0
  return z
return y ;es ist egal wie viele Returns du setzt und wo du sie setzt sie beenden die Funktion und geben den Wert zurück mit dem sie ausgelöst wurden.
}

Function2()
{
If !A_ScriptDir
  return ;ein return muss nicht unbedingt einen Wert haben.
str:=A_ScriptDir
Stringtrimrigt,str,str,3
return str
}

Ich hoffe das hilt dir für das erste bei deinem Verständnisproblem für Funktionen weiter.

Wenn du immernoch Hilfe brauchst start nen neuen Thread und frag expizit nach + Code.


Visit the new forum ahkscript.org.

http://ahkscript.org


Marshall666
  • Members
  • 45 posts
  • Last active: May 16 2013 04:03 PM
  • Joined: 09 Mar 2013

Echt vielen dank! Ich glaub ich brauch noch ein wenig um das so umzuwandeln das es funktioniert, danke trotzdem ..  wink.png

 

..wenn ich wüsste wofür was genau steht usw.

Durch die deutsche Hilfen werd ich auch nicht so schlau weil das komisch erklärt ist, zumindest so das ichs nicht versteh!



Marshall666
  • Members
  • 45 posts
  • Last active: May 16 2013 04:03 PM
  • Joined: 09 Mar 2013

Jetzt hab ichs endlich..

Ich brauchte nur ein Sleep, 1000 vor if stop = 1 setzen:

 

exec:

stop = 0
Loop
{
    sleep, 1000;hier der Sleep.. sorgt dafür das nachm Stop Button drücken er wirklich sofort stopt, jetzt kann ich immer Stopen und starten
  If stop = 1
      Break
  ToolTip, %A_Index%
  Sleep, 500
   
Sleepandwaitforstop(10)
Mousecklickleftandstop(126,137)
Sleepandwaitforstop(10)
Mousecklickleftandstop(696,431)
Sleepandwaitforstop(10)
Mousecklickleftandstop(809,405) 
Sleepandwaitforstop(10)
Mousecklickleftandstop(760,378)
Sleepandwaitforstop(10)
Mousecklickleftandstop(706,354) 
Sleepandwaitforstop(10)
Mousecklickleftandstop(666,327)
Sleepandwaitforstop(10)
Mousecklickleftandstop(612,353) 
Sleepandwaitforstop(10)
Mousecklickleftandstop(564,377) 
Sleepandwaitforstop(10)
Mousecklickleftandstop(1155,707) 
Sleepandwaitforstop(10)
Mousecklickleftandstop(1107,732)
Sleepandwaitforstop(10)
Mousecklickleftandstop(982,744)
Sleepandwaitforstop(10)
Mousecklickleftandstop(922,721)
Sleepandwaitforstop(10)
Mousecklickleftandstop(1034,618) 
Sleepandwaitforstop(10)
Mousecklickleftandstop(977,647)
Sleepandwaitforstop(10)
Mousecklickleftandstop(933,620)
Sleepandwaitforstop(10)
Mousecklickleftandstop(875,559)
Sleepandwaitforstop(10)
Mousecklickleftandstop(902,457) 
Sleepandwaitforstop(10)
Mousecklickleftandstop(851,434) 
Sleepandwaitforstop(10)
Mousecklickleftandstop(779,442)
Sleepandwaitforstop(10)
Mousecklickleftandstop(1115,742)
Sleepandwaitforstop(10)
Mousecklickleftandstop(723,475)
Sleepandwaitforstop(10)
Mousecklickleftandstop(675,507)
Sleepandwaitforstop(10)
Mousecklickleftandstop(385,135)
Sleepandwaitforstop(955000)


}
Return 



    Sleepandwaitforstop(time)
    {
    global
    Loop, % time//50
    {
    if stop
    return
    sleep, 50
    }
    }
    Mousecklickleftandstop(x,y)
    {
    Global
    if !stop
    Mouseclick,left,% x,% y
    }

     



    Button4:
    stop:=!stop
    if !stop ;sorgt dafür , dass man über diesen Knops Starten und stoppen kann
    goto,exec ;Hat schon so seinen Sinn
    return 






~escape::ExitApp


GuiClose:
Exitapp
return