1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. latemail

Beiträge von latemail

  • Seltsamer Programm-Abbruch durch Fehler

    • latemail
    • 5. Januar 2009 um 14:22

    Frohes Neues !!

    Ich habe mir ein Programm geschrieben, welches u.a. folgende Funktion nutzt (aus der Hilfe kopiert):

    $var=WinList()

    For$i=1to$var[0][0]
    If$var[$i][0]<>""AND IsVisible($var[$i][1])Then
    MsgBox(0,"Details","Title="&$var[$i][0]&@LF&"Handle="&$var[$i][1])
    EndIf
    Next


    Das Programm steigt nun manchmal mit der Fehlermeldung aus:

    Fehler Line -1 und dem Hinweis, dass ein Array nicht definiert wurde bzw. dessen Grenzen überschritten wurde.


    ?? 1 ?? : Fehler in Zeile -1 -->> was soll mir das sagen?

    Lösung : (kritischer) Programmfehler

    ?? 2 ?? : Muss ich $var als Global/Local definieren, welche Grenzen sollte man dann wählen, wenn man die Anzahl der laufenden Prozesse ja vorher nicht kennt ($var[30][2]?)

    Lösung :

    1. ja, Definition hat das Auftreten des Fehlers behoben

    2. ich habe einfach großzügige Grenzen vergeben (quick-and-dirty!)

  • Pixel search

    • latemail
    • 10. Dezember 2008 um 17:04

    siehe Hilfe:

    PixelSearch

    Return Value

    Success: Returns a two-element array of pixel's coordinates. (Array[0] = x, Array[1] = y)

    Failure: Sets @error to 1 if color is not found.


    ; Find a pure red pixel in the range 0,0-20,300
    $coord=PixelSearch(0,0,20,300,0xFF0000)
    IfNot@errorThen
    MsgBox(0,"X and Y are:",$coord[0]&","&$coord[1])
    EndIf


    und als Bonus, aus

    MouseMove($PSG)
    MouseClick("right")


    mach

    MouseClick("right", $coord[0], $coord[1] )

  • Rekursive Funktion per Button beenden

    • latemail
    • 8. Dezember 2008 um 14:55

    - mach doch aus der func "schreibe" eine while-Schleife

    - verwende zum Abbruch eine IF-Abfrage (if blabla then exitloop)

    - den Merker blabla setzt Du über eine Funktion

    - diese Funktion rufst Du per Hotkey auf

  • script kompillieren

    • latemail
    • 2. Dezember 2008 um 13:11

    Wenn Du zum compilieren nicht die eingebaute Editor-Funktion nimmst sondern das Programm "Aut2exe.exe" (wird mitinstalliert), kannst Du das Icon angeben, welches verwendet werden soll ........................

  • Wie / Wo werden Funktionsaufrufe gespeichert? Kann man diesen "Speicher" löschen?

    • latemail
    • 2. Dezember 2008 um 08:48

    Danke Oscar,

    Deine Zusammenfassung hat nochmal zusätzlich Licht in meine GOTO-Dunkelheit gebracht.

    Auch wenn ich immer versuche, die "neue" Programmiersystematik umzusetzten, hänge ich doch in meinen Ansätzen manchmal noch an der "guten alten" Zeit ..... so habe ich es halt gelernt :whistling:

    Das mit dem RETURN (Abbruch und nicht nur Datenrückgabe) war mir neu und ist letztlich das, was ich schon häufig gesucht habe, um Rekursionen zu vermeiden.

    THX

  • Wie / Wo werden Funktionsaufrufe gespeichert? Kann man diesen "Speicher" löschen?

    • latemail
    • 1. Dezember 2008 um 17:48

    Merci, klingt so einfach, das werde ich mal testen .....

    THX

  • Wie / Wo werden Funktionsaufrufe gespeichert? Kann man diesen "Speicher" löschen?

    • latemail
    • 1. Dezember 2008 um 17:18

    Also ein konkretes Script habe ich derzeit nicht, aber prinzipiell ist es so gemeint:

    [autoit]

    Func start ()
    ;Anweisungen wie z.B. Seitenanwahl etc.
    $inaktiv = TimerInit()
    While (1)
    ;send(Passwort)
    ;send(ENTER)
    $Pixel_Logo = Pixelsearch ( x,y,x1,y1,farbe )
    If not @Error Then
    ;weitere Eingaben wenn das Logo erscheint
    ;ExitLoop
    EndIf
    $inaktiv_diff = TimerDiff($inaktiv)
    if $inaktiv_diff > 50000 Then
    start ()
    EndIf
    WEnd
    Endfunc

    [/autoit]

    Edit 1:Sorry, aber bei mir schluckt er immer die Einrückungen im Script :cursing:

    Edit 2: Danke @progandy@, ist ne gute Lösung um eine einzelne Funktion zu überprüfen, das werde ich mal testen. Aber wie ist das mit dem "Speicher" für Funktionsaufrufe? Vielleicht denke ich nur zu umständlich ..... ?(

  • Wie / Wo werden Funktionsaufrufe gespeichert? Kann man diesen "Speicher" löschen?

    • latemail
    • 1. Dezember 2008 um 16:34

    Hallo zusammen,

    folgendes Phänomen bereitet mir derzeit einiges Kopfzerbrechen:

    In einer Funktion werden mehrere Anweisungen ausgeführt, der "Vollzug" der einzelnen Anweisungen wird jeweils kontrolliert. Wenn etwas nicht klappt rufe ich die Funktion erneut auf, um von vorne zu beginnen, da die Reihenfolge vorgegeben ist und immer vollständig durchlaufen werden muss. (ein Beispiel wäre ein Einlog-Script)

    Jedoch werden die erfolglosen Durchläufe irgendwie/wo gespeichert, denn nach erfolgreichem Durchlaufen der Funktion spulen sich die "Fehlversuche" ebenfalls ab, genauso oft, wie die Funktion eben aufgerufen wurde [in BASIC hätte ich es mit GOTO ANFANG gelöst :D ].

    Kann man den "Schleifespeicher" löschen, gibts eine elegantere Lösung?

    Bitte um Hinweise ...........

    CU

  • GUI-Darstellung, Wechsel der Schriftfarbe eines Labels --> ästhetisches Problem

    • latemail
    • 27. November 2008 um 17:09

    Hi Greenhorn,

    Dein Name ist aber echt irreführend ;)

    Danke für den Tip, muss es zuhause testen, im Büro habe ich kein XP ---- Aber scheint ja zu klappen!

    Kannst Du mir einen Link zum Eng-Forum geben, scheint ja ne wahre Fundgrube zu sein?

    THX

  • GUI-Darstellung, Wechsel der Schriftfarbe eines Labels --> ästhetisches Problem

    • latemail
    • 27. November 2008 um 16:16

    :thumbup: THX anyway :thumbup:


    und grüss mir Edith :rofl:

  • GUI-Darstellung, Wechsel der Schriftfarbe eines Labels --> ästhetisches Problem

    • latemail
    • 27. November 2008 um 15:57

    "im Prinzip ja, aber ....." sagt Radio Eriwan :)


    erstmal Danke ....


    - das mit den zwei Bildern könnte ich versuchen, ist jedoch aufwändig, da ich in dem echten GUI natürlich mehrere Labels habe (war hier nur eine verkürzte Version wegen der Übersichtlichkeit)

    - der Tip von Edith (??) ist gut, nur habe ich eben mehrere Labels, deshalb habe ich die Funktion extra eingeführt, um das Script zu kürzen (konnte man so nicht erkennen, ist klar)

    - und wie fügst Du das Script MIT Formatierungen (Einrückungen) in den Thread ein?? Ich habe <SPOILER><AUTOIT> verwendet, da fliegen die TAbs raus ???!!!

  • GUI-Darstellung, Wechsel der Schriftfarbe eines Labels --> ästhetisches Problem

    • latemail
    • 27. November 2008 um 14:46

    Hallo zusammen,

    ich habe für die GUI-Spezialisten unter Euch einen Schönheitsfehler, den ich gerne beseitigen möchte:

    Ich möchte die Auswahl einer Funktion (ON/OFF) über ein Label des GUI steuern, beim Anklicken wechselt die Farbe der Schrift, so daß man den Status erkennen kann. So weit so gut; klappt auch. Jedoch "erscheint" beim Anklicken des Labels kurzzeitig der Hintergrund, kann man das vermeiden? In der Hilfe habe ich nichts gefunden, um den "Umschaltvorgang" zu beeinflussen .......

    P.S.

    - den Farbwechsel habe ich unterschiedlich realisiert, gleiches Ergebnis

    - habe den Farbwechsel mit der Funktion test() [Aurfuf über <t>] auch mal ohne Klicken realisiert, das Erscheinen des Hintergrundes liegt aber nicht an der Maus-Ansteuerung des Labels


    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $sethfm = 0
    Global $b_hoehe = 30, $b_breite = 250
    Global $farbe1 = 0xff0000 ; Rot
    Global $farbe2 = 0x076825 ; Grün
    Global $L2

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet("t", "test")

    [/autoit] [autoit][/autoit] [autoit]

    ;-------------------------------------------------------------------------------------------------------------
    gui()
    Exit
    ;-------------------------------------------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    Func gui()
    $Form1 = GUICreate("Form1", 500, 440, (@DesktopWidth - 500) / 2, (@DesktopHeight - 400) / 2, $WS_DLGFRAME + $WS_POPUP + $WS_THICKFRAME)
    $Pic1 = GUICtrlCreatePic("pic.jpg", 0, 0, 500, 440, $WS_BORDER)
    $L2 = GUICtrlCreateLabel("Label Text", 125, 200, $b_breite, $b_hoehe, $SS_CENTER)
    GUICtrlSetCursor(-1, 0)
    If $sethfm = 0 Then format($L2, $farbe1)
    If $sethfm = 1 Then format($L2, $farbe2)
    GUISetState(@SW_SHOW)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $L2
    If $sethfm = 0 Then
    $sethfm = 1
    GUICtrlSetColor($L2, $farbe2)
    ElseIf $sethfm = 1 Then
    $sethfm = 0
    format($L2, $farbe1)
    EndIf
    EndSwitch
    WEnd
    EndFunc ;==>gui

    [/autoit] [autoit][/autoit] [autoit]

    Func format($control, $farbe)
    GUICtrlSetBkColor($control, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 18, 900, 2, "Verdana")
    GUICtrlSetColor($control, $farbe)
    EndFunc ;==>format

    [/autoit] [autoit][/autoit] [autoit]

    Func test()
    For $i = 1 To 3
    GUICtrlSetColor($L2, $farbe2)
    Sleep(1000)
    GUICtrlSetColor($L2, $farbe1)
    Sleep(1000)
    Next
    EndFunc ;==>test

    [/autoit]

    das GUI-Hintergrundbild (bitte ins gleiche Verzeichnis kopieren)

    [Blockierte Grafik: http://freenet-homepage.de/latemail/pic.jpg]


    >>>> und wie bitte bleibt im Spoiler die Formatierung des Quell-Textes erhalten?? <<<<<<

  • Anfängerfrage zum Compilieren von AutoIt-Scripten

    • latemail
    • 25. November 2008 um 15:59

    @Xeno : Danke für die schnelle Antwort, werde Deine Tips mal ausprobieren (ENG forum ist das englische Forum nehme ich an)

    @Toby : wie das Compilieren geht weiss ich, Danke, AutoIt bindet nur die Grafiken nicht automatische ein!!

  • Anfängerfrage zum Compilieren von AutoIt-Scripten

    • latemail
    • 25. November 2008 um 15:30

    Hallo an Alle,

    ich habe nun schon Einiges (Vieles!!) hier gelesen und gelernt, die ersten Scripte mit Hintergrund-Bild und GUI-Logo etc. sind fertig ....

    und jetzt will ich alles in eine EXE-Datei packen ..... wie geht das, beim Compilieren macht er das nicht automatisch !!??


    EDIT: FileInstall war der Tip!!!!

  • Mehrere GUIs verwenden ohne gegenseitige Beeinflussung

    • latemail
    • 17. Juni 2008 um 13:36
    Zitat von FireFlyer

    Danke für die Hilfe, das war jedoch nicht die Lösung:

    der Pferdefuss war : Opt("GUICoordMode",2)

    damit hatten die GUIs unterschiedliche Referenzierungsverfahren (absolut/relativ zum Dialog-Fenster bzw. den früheren Einträgen) für die Position der Elemente, das GUI 2 hat funktioniert, nur habe ich die Elemente nicht sehen können, da sie im Nirvana lagen!!!

    also im Klartext falls mal jemand nachliest:

    Opt("GUICoordMode",2) bewirkt,dass nacheinander definierte Buttons aneinander gehängt werden, die Positionsangabe bezieht sich also auf das vorherige Element


    nix angeben oder Opt("GUICoordMode",1) bewirkt,dass sich die Positionsangaben alle auf den Koordinatenursprung des Fensters beziehen


    ### problem solved ### THX

    Alles anzeigen
  • Mehrere GUIs verwenden ohne gegenseitige Beeinflussung

    • latemail
    • 17. Juni 2008 um 09:54

    Hallo zusammen,

    ich habe ein Anfängerproblem mit GUIs.

    Ich nutze zu Beginn meines Programms ein GUI als Infofenster. Im späteren Verlauf öffne ich ein weiteres GUI, um eine Auswahl zu treffen. Das zweite GUI funktioniert fehlerfrei in einer eigenständigen Datei, auch wenn ich es in eine Funktion einbaue um es aufzurufen. Im Programm (Verwendung der gleichen Funk.) wird aber nur der Hintergrund dargestellt, die Auswahlelemente fehlen, es werden jedoch die vorausgewählten Werte übertragen!!??

    ich vermute das erste GUI ist quasi noch aktiv, wie kann ich es endgültig "beenden"??

    Folgendes hat nicht geklappt:

    While 1 ; MessageBox zur Info bei Beenden von GUI 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then
    GuiSetState(@SW_DISABLE)
    GUIDelete() 
    ExitLoop
    EndIf
    Wend

    ebensowenig erfolgreich zu Beginn von GUI 2:

    GuiSetState(@SW_UNLOCK)
    GuiSetState(@SW_SHOW)

    wer kann helfen??

    Spoiler anzeigen
    [autoit]


    #include <GuiConstantsEx.au3>
    #include <GUIConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet ("g","gui")

    [/autoit] [autoit][/autoit] [autoit]

    Global $character[5], $channel[5], $cha, $fig

    [/autoit] [autoit][/autoit] [autoit]

    ; Beginn GUI 1 ###########################
    GUICreate("Helper",220,240) ; will create a dialog box that when displayed is centered
    Opt("GUICoordMode",2)
    $laenge = 200
    $hoehe = 20
    GUICtrlCreateLabel (......... >>> SKRIPT GEKÜRZT <<<<
    ............
    GUICtrlCreateLabel ("Login : Strg - l", -$laenge, 0, $laenge, $hoehe)
    GUISetState ()

    [/autoit] [autoit][/autoit] [autoit]

    While 1 ; MessageBox zur Info
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then
    GuiSetState(@SW_DISABLE)
    GUIDelete()
    ExitLoop
    EndIf
    Wend
    ; Ende GUI 1 ###########################

    [/autoit] [autoit][/autoit] [autoit]

    While (1) ; Hauptschleife Helper
    Sleep(1000) ; Überprüft jede Sekunde ob Hotkeys benutzt wurden
    WEnd ; Schließt die Schleife ab

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func gui () ; Anfang GUI 2
    GuiCreate(" ", 400, 400) ; GUI
    GuiSetIcon("leer.ico", 0)
    GuiCtrlSetColor(-1,0xffffff)
    GuiCtrlCreatePic("header.jpg",10,10, 380,100) ; PIC
    GuiCtrlCreateGroup("Character - Auswahl", 10, 120, 185, 110) ;; GROUP WITH RADIO BUTTONS
    $gr_xpos = 30
    $gr_ypos = 140
    $gr_deltay = 20
    $character[1] = GuiCtrlCreateRadio("1", $gr_xpos, $gr_ypos, 80)
    GuiCtrlSetState(-1, $GUI_CHECKED)
    $character[2] = GuiCtrlCreateRadio("2", $gr_xpos, $gr_ypos+$gr_deltay, 80)
    $character[3] = GuiCtrlCreateRadio("3", $gr_xpos, $gr_ypos+2*$gr_deltay, 80)
    $character[4] = GuiCtrlCreateRadio("4", $gr_xpos, $gr_ypos+3*$gr_deltay, 80)
    GUICtrlCreateGroup ("",-99,-99,1,1) ;close group
    GuiCtrlCreateGroup("Startchannel - Auswahl", 205, 120, 185, 110) ;; GROUP WITH RADIO BUTTONS
    $gr_xpos = 225
    $gr_ypos = 140
    $gr_deltay = 20
    $channel[1] = GuiCtrlCreateRadio("Channel 1", $gr_xpos, $gr_ypos, 80)
    $channel[2] = GuiCtrlCreateRadio("Channel 2", $gr_xpos, $gr_ypos+$gr_deltay, 80)
    $channel[3] = GuiCtrlCreateRadio("Channel 3", $gr_xpos, $gr_ypos+2*$gr_deltay, 80)
    GuiCtrlSetState(-1, $GUI_CHECKED)
    $channel[4] = GuiCtrlCreateRadio("Channel 4", $gr_xpos, $gr_ypos+3*$gr_deltay, 80)
    GUICtrlCreateGroup ("",-99,-99,1,1) ;close group
    $endbutton = GuiCtrlCreateButton("... weiter", 10, 330, 100, 30) ; BUTTON
    GuiSetState(@SW_UNLOCK)
    GuiSetState(@SW_SHOW)
    While (1) ; GUI MESSAGE LOOP
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then
    ausgabe ()
    GuiSetState(@SW_DISABLE)
    GUIDelete ()
    ExitLoop
    EndIf
    If $msg = $endbutton Then
    ausgabe ()
    GuiSetState(@SW_DISABLE)
    GUIDelete ()
    ExitLoop
    EndIf
    WEnd
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func ausgabe ()
    for $i = 1 to 4
    $zwi1 = GUICtrlRead($character[$i])
    $zwi2 = GUICtrlRead($channel[$i])
    if $zwi1 = 1 Then
    $fig = $i
    EndIf
    if $zwi2 = 1 Then
    $cha = $i
    EndIf
    Next
    MsgBox ( 1, "Gewählt wurde :", $fig & "---" & $cha )
    EndFunc

    [/autoit]
  • Eine Grafik angeben und deren Inhalt auf dem Bildschirm suchen

    • latemail
    • 13. Juni 2008 um 10:51
    Zitat von WoEf

    vllt für einen captcha breaker


    also ich weiss nicht was ein "captcha breaker" ist, aber z.B. um eine Anwendung zu starten, ohne wissen zu müssen, wo auf dem DT das Icon ist .... oder eine Anwendung/Fenster zu schließen, auch wenn ich die genaue Position des jeweiligen Buttons nicht kenne (Auflösun kann anders sein etc.)

    das ist meine Idee dahinter ....

  • Eine Grafik angeben und deren Inhalt auf dem Bildschirm suchen

    • latemail
    • 12. Juni 2008 um 15:16

    Hallo an Alle,

    ich habe schon die SuFu bemüht, aber nichts passendes gefunden, daher meine Frage mit Bitte um Tips oder Link zu Beispielen.:

    ich möchte eine Grafik (jpg, bmp o.ä.) mit dem Bildschirminhalt vergleiche, um die Position der Grafik auf der

    Oberfläche auszulesen, wie mache ich das am besten? checksum wäre eine Möglichkeit, ist aber wahrscheinlich langsam,

    was bietet sich sonst an?

    Thx for reply

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™