Per GUI in Ini Schreiben

  • Hallo AutoIt Comm,

    ich habe da ein kleines prob mit einer (vor 30min gebastelten) Gui.
    Er soll einen bestimmten Wert (Genaugenommen Installations Pfad) den man bei einem Input Feld (Gui) in eine Ini schreiben. Nur wenn ich da den Richtigen Pfad angebe, dann schreibt er "pfad=14" in die ini Datei.

    Hier mal der Code

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    Opt("GUICoordMode", 1)
    Global $idpw, $id, $pw, $idi, $pwi, $pfad, $start, $save, $load, $pfad1, $msg, $pfad2, $pfadi, $save1, $closed, $msg
    Global $starter = GUICreate("BBO Starter", 329, 100, 389, 236)

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

    $idpw = GUICtrlCreateGroup("Login ID und Passwort", 0, 0, 169, 65)
    $id = GUICtrlCreateLabel("ID:", 8, 16, 20, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $pw = GUICtrlCreateLabel("PW:", 8, 40, 29, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")

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

    ; ------------------------------------------------------------- ;
    ; ------------------|ID und PW Angeben START|------------------ ;

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

    $idi = GUICtrlCreateInput("", 40, 40, 121, 21)
    $pwi = GUICtrlCreateInput("", 40, 16, 121, 21)

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

    ; ------------------|ID und PW Angeben ENDE|------------------- ;
    ; ------------------------------------------------------------- ;

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

    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $pfad = GUICtrlCreateButton("Installations Pfad Angeben", 176, 8, 145, 25, 0)
    $start = GUICtrlCreateButton("BBO Starten", 176, 40, 145, 25, 0)
    $save = GUICtrlCreateButton("Login Speichern", 0, 72, 89, 25, 0)
    $load = GUICtrlCreateButton("Login Laden", 88, 72, 81, 25, 0)

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

    ; ------------------------------------------------------------- ;
    ; ----------------|Installations Pfad Angeben|----------------- ;

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

    GUISetState(@SW_SHOW, $starter & $pfad)
    $pfad1 = GUICreate("Installations Pfad von BBO", 396, 84, 157, 126)
    $pfad2 = GUICtrlCreateGroup("Installations Pfad:", 0, 0, 393, 49)
    $pfadi = GUICtrlCreateInput("C:\Programme\Yusho Frohster Games\Bounty Bay Online\", 8, 16, 369, 21)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $save1 = GUICtrlCreateButton("Speichern", 0, 56, 113, 25, 0)
    $closed = GUICtrlCreateButton("Schliessen", 120, 56, 113, 25, 0)
    GUISetState(@SW_HIDE, $pfad1)

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

    ; --------------|Installations Pfad Angeben ENDE|-------------- ;
    ; ------------------------------------------------------------- ;

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

    While 1
    $msg = GUIGetMsg(1)
    Select

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

    ; ------------------------------------------------------------- ;
    ; ------------------------|BBO STARTEN|------------------------ ;

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

    Case $msg[0] = $start
    $run = IniRead("ini\confic.ini", "InstallPath", "path", 0)
    Run($run &"voyagecentury.exe", $run)

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

    ; ----------------------|BBO STARTEN ENDE|--------------------- ;
    ; ------------------------------------------------------------- ;

    ; ..... weitere funktionen werden hier noch eingebaut

    ; ------------------------------------------------------------- ;
    ; -----------|PFAD ANGEBEN UND IN INI SCHREIBEN|--------------- ;

    Case $msg[0] = $pfad
    GUISetState(@SW_SHOW, $pfad1)
    IniDelete("ini\confic.ini", "InstallPath", "path")

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

    Case $msg[0] = $save1
    IniWrite("ini\confic.ini", "InstallPath", "path", $pfadi)
    Case $msg[0] = $closed
    GUISetState(@SW_HIDE, $pfad1)
    Case $msg[0] = $GUI_EVENT_CLOSE
    If $msg[1] = $pfad1 Then GUISetState(@SW_HIDE, $pfad1)
    If $msg[1] = $starter Then Exit

    ; --------|PFAD ANGEBEN UND IN INI SCHREIBEN ENDE|------------- ;
    ; ------------------------------------------------------------- ;

    EndSelect
    WEnd

    [/autoit]

    Ich bedanke mich schonmal für die Unterstützung.

    Achja: Ist kein Bot ;) , hab die Regeln schon gelesen ^^

    und gn8 an alle ^^

  • So und da ist schon das 2 Problem.

    Ja ich bin Anfänger in AutoIt, mir gefällt was man damit machen kann, aber zurück zum problem.

    Also wenn ich den "Starter" starte, und mein Login und PW eintrage und auf Speichern drücke, speichert er es in die Ini, das ist kein Problem.

    Mein Problem liegt darin, wenn man auf "Laden" drückt, das er es in die Felder lädt.

    Also PW und ID sollen dann aus der Ini geladen werden und in die input Felder reingeschrieben werden.

    Nochmal der kleine Abschnitt, was ich bisher gemacht habe (voller Code steht oben, nur das kommt noch dazwischen ^^)

    [autoit]

    Case $msg[0] = $save
    IniDelete("ini\confic.ini", "id", "login") ; ID aus der INI löschen
    IniDelete("ini\confic.ini", "pw", "pass") ; PW aus der INI löschen

    IniWrite("ini\confic.ini", "id", "login", GUICtrlRead($idi)) ; ID in die INI schreiben
    IniWrite("ini\confic.ini", "pw", "pass", GUICtrlRead($pwi)) ; PW in die INI schreiben

    Case $msg[0] = $load
    ;IniRead("ini\confic.ini", "id", "login", GUICtrlRead($idi))
    ;IniRead("ini\confic.ini", "pw", "pass", GUICtrlRead($pwi))

    [/autoit]

    Da ist die Speicher Funktion und Lade funktion, ausgeklammert habe ich es deswegen, weil es nicht funzt.

    Bedanke mich schonmal im Vorraus und Sorry für den Doppelt Post :whistling:

  • Wenn ichs richtig verstanden habe suchst du

    [autoit]

    GUICtrlSetData

    [/autoit]

    in deinem beispiel:

    [autoit]


    Case $msg[0] = $save
    IniDelete("ini\confic.ini", "id", "login") ; ID aus der INI löschen
    IniDelete("ini\confic.ini", "pw", "pass") ; PW aus der INI löschen

    IniWrite("ini\confic.ini", "id", "login", GUICtrlRead($idi)) ; ID in die INI schreiben
    IniWrite("ini\confic.ini", "pw", "pass", GUICtrlRead($pwi)) ; PW in die INI schreiben

    Case $msg[0] = $load
    $var1 = IniRead("ini\confic.ini", "id", "login", "") ;Beim letztem Parameter kannst (musst aber nicht) du einen default Wert eingeben)
    $var2 = IniRead("ini\confic.ini", "pw", "pass", "")
    GUICtrlSetData($idi, $var1)
    GUICtrlSetData($pwi, $var2)

    [/autoit]
  • Im prinzip funktioniert es so schon
    du musst nur noch eine variable zuweisen
    also:

    [autoit]


    $login = IniRead("ini\confic.ini", "id", "login", GUICtrlRead($idi))
    $pass = IniRead("ini\confic.ini", "pw", "pass", GUICtrlRead($pwi))
    Guictrlsetdata($idi, $login)
    Guictrlsetdata($pwi, $pass)

    [/autoit]

    Padmak

    Edit nuts:
    warum setzt du 2 mal den gleichen wert in die gleiche Inputbox? (z.11 & 12)^^

    Padmak

  • So ich melde mich nochmal zu Wort *G*

    Also soweit so gut, alles hat geklppt wie Ihr es mir geschrieben habt.

    Nur was ich nicht verstehe ist, wie man mit PixelGetSearch arbeitet. Nachdem der Client gestartet wurde von dem Spiel, soll er auf den "Start Game" Button klicken.

    Wenn ich die Farbe ermitteln will (Mit dem Window Info) kommt nur 0xFFFFFF über die ganze Clienten Oberfläche.
    Möchte es gerne so haben, das er auf Start Game drückt wenn alles geladen wurde.

    Mit der Tab Funktion funzt es leider nicht, deshlab wende ich mich wieder an euch, und hoffe das Ihr mir helft *G*

    Und kann mir mal bitte jemand sagen, wie ich beim PW Feld nur "*****" reinbekomme? Weil so kann man ja jedem über die Schultern schauen und man sieht demjenigen Sein PW.

    Hier nochmal der Code:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    Opt("GUICoordMode", 1)
    Global $idpw, $id, $pw, $idi, $pwi, $pfad, $start, $save, $load, $pfad1, $msg, $pfad2, $pfad3, $inputbbo, $pfada, $inputa, $save1, $load1, $closed, $msg
    Global $starter = GUICreate("BBO Starter", 329, 100, 389, 236)

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

    $idpw = GUICtrlCreateGroup("Login ID und Passwort", 0, 0, 169, 65)
    $id = GUICtrlCreateLabel("ID:", 8, 16, 20, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $pw = GUICtrlCreateLabel("PW:", 8, 40, 29, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")

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

    ; ------------------------------------------------------------- ;
    ; ------------------|ID und PW Angeben START|------------------ ;

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

    $pwi = GUICtrlCreateInput("", 40, 40, 121, 21)
    $idi = GUICtrlCreateInput("", 40, 16, 121, 21)

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

    ; ------------------|ID und PW Angeben ENDE|------------------- ;
    ; ------------------------------------------------------------- ;

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

    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $pfad = GUICtrlCreateButton("Installations Pfad Angeben", 176, 8, 145, 25, 0)
    $start = GUICtrlCreateButton("BBO und Almanach Starten", 176, 40, 145, 25, 0)
    $save = GUICtrlCreateButton("Login Speichern", 0, 72, 89, 25, 0)
    $load = GUICtrlCreateButton("Login Laden", 88, 72, 81, 25, 0)

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

    ; ------------------------------------------------------------- ;
    ; ----------------|Installations Pfad Angeben|----------------- ;

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

    GUISetState(@SW_SHOW, $starter & $pfad)
    $pfad2 = GUICreate("BBO und Almanach Installations Pfad Angeben", 365, 139, 193, 125)
    $pfad3 = GUICtrlCreateGroup("BBO Installations Pfad Angeben:", 0, 0, 361, 49)
    $inputbbo = GUICtrlCreateInput("C:\Programme\Yusho Frogster Games\Bounty Bay Online\", 8, 16, 337, 21)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $pfada = GUICtrlCreateGroup("BBO Almanach Installations Pfad Angeben:", 0, 56, 361, 49)
    $inputa = GUICtrlCreateInput("C:\Programme\Almanach\BBO Almanach\", 8, 72, 337, 21)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $save1 = GUICtrlCreateButton("Speichern", 0, 112, 105, 25, 0)
    $load1 = GUICtrlCreateButton("Laden", 120, 112, 107, 25, 0)
    $closed = GUICtrlCreateButton("Schliessen", 248, 112, 105, 25, 0)
    GUISetState(@SW_HIDE, $pfad1)

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

    ; --------------|Installations Pfad Angeben ENDE|-------------- ;
    ; ------------------------------------------------------------- ;

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

    While 1
    $msg = GUIGetMsg(1)
    Select

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

    ; ------------------------------------------------------------- ;
    ; ------------------------|BBO STARTEN|------------------------ ;

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

    Case $msg[0] = $start
    $bbo = MsgBox(4, "Nur BBO starten?", 'Soll nur BBO gestartet werden? (Bei Klick auf "Nein" wird der Almanach auch gestartet)')
    $modus = MsgBox(4, "Fenster?", "Spielen Sie im Fenster Modus?")
    If $bbo = 6 Then
    $run = IniRead("ini\confic.ini", "BBO Pfad", "bbo", 0) ; Pfad aus der INI lesen
    Run($run &"voyagecentury.exe", $run) ; BBO Starten

    ; -----------------------|BBO STARTEN ENDE|-------------------- ;
    ; ------------------------------------------------------------- ;
    ; -----------------|BBO STARTEN FENSTER/VOLLBILD|-------------- ;

    ElseIf $modus = 6 Then ; <---- FensterModus
    Sleep(3000)
    Send("{TAB}")
    Sleep(1000)
    Send("{ENTER}"); <---- Bestätigen

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

    ElseIf $modus = 7 Then ; <---- Vollbild
    Sleep (3000)
    Send("{ENTER}"); <---- Bestätigen
    EndIf

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

    ; -----------------|BBO STARTEN FENSTER/VOLLBILD|-------------- ;
    ; ------------------------------------------------------------- ;
    ; ------------------|BBO STARTEN MIT ALMANACH|----------------- ;

    If $bbo = 7 Then
    $run = IniRead("ini\confic.ini", "BBO Pfad", "bbo", 0)
    $run1 = IniRead("ini\confic.ini", "Almanach Pfad", "almanach", 0)
    Run($run1 &"BBO Almanach.exe", $run1) ; Almanach Starten
    WinWaitActive("BBO Almanach")
    Run($run &"voyagecentury.exe", $run) ; BBO Starten
    Sleep(8000)
    MouseClick("left", $PixelSearch[0], $PixelSearch[1])

    ; ----------------|BBO STARTEN MIT ALMANACH ENDE |------------- ;
    ; ------------------------------------------------------------- ;
    ; -----------------|BBO STARTEN FENSTER/VOLLBILD|-------------- ;

    ElseIf $modus = 6 Then ; <---- FensterModus
    Sleep(3000)
    Send("{TAB}")
    Sleep(1000)
    Send("{ENTER}"); <---- Bestätigen

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

    ElseIf $modus = 7 Then ; <---- Vollbild
    Sleep (3000)
    Send("{ENTER}"); <---- Bestätigen
    EndIf

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

    ; -----------------|BBO STARTEN FENSTER/VOLLBILD|-------------- ;
    ; ------------------------------------------------------------- ;
    ; ---|LOGIN DATEN ANGEBEN UND IN INI SCHREIBEN ODER LADEN|----- ;

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

    Case $msg[0] = $save
    IniDelete("ini\confic.ini", "id", "login") ; ID aus der INI löschen
    IniDelete("ini\confic.ini", "pw", "pass") ; PW aus der INI löschen

    IniWrite("ini\confic.ini", "id", "login", GUICtrlRead($idi)) ; ID in die INI schreiben
    IniWrite("ini\confic.ini", "pw", "pass", GUICtrlRead($pwi)) ; PW in die INI schreiben

    Case $msg[0] = $load
    $login = IniRead("ini\confic.ini", "id", "login", GUICtrlRead($idi))
    $pass = IniRead("ini\confic.ini", "pw", "pass", GUICtrlRead($pwi))
    Guictrlsetdata($idi, $login)
    Guictrlsetdata($pwi, $pass)

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

    ; -|LOGIN DATEN ANGEBEN UND IN INI SCHREIBEN ODER LADEN ENDE|-- ;
    ; ------------------------------------------------------------- ;
    ; -----------|PFAD ANGEBEN UND IN INI SCHREIBEN|--------------- ;

    Case $msg[0] = $pfad
    GUISetState(@SW_SHOW, $pfad1)

    Case $msg[0] = $save1
    IniDelete("ini\confic.ini", "BBO Pfad", "bbo") ; InstallationsPfad aus der Ini löschen
    IniDelete("ini\confic.ini", "Almanach Pfad", "almanach") ; InstallationsPfad aus der Ini löschen

    IniWrite("ini\confic.ini", "BBO Pfad", "bbo", GUICtrlRead($inputbbo)) ; InstallationsPfad in die INI schreiben
    IniWrite("ini\confic.ini", "Almanach Pfad", "almanach", GUICtrlRead($inputa)) ; InstallationsPfad in die INI schreiben

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

    Case $msg[0] = $load1
    $bbo1 = IniRead("ini\confic.ini", "BBO Pfad", "bbo", GUICtrlRead($inputbbo)) ; InstallationsPfad aus der INI laden
    $almanach = IniRead("ini\confic.ini", "Almanach Pfad", "almanach", GUICtrlRead($inputa)) ; InstallationsPfad aus der INI laden
    GUICtrlSetData($inputbbo, $bbo1)
    GUICtrlSetData($inputa, $almanach)

    Case $msg[0] = $closed
    GUISetState(@SW_HIDE, $pfad1)

    Case $msg[0] = $GUI_EVENT_CLOSE
    If $msg[1] = $pfad1 Then GUISetState(@SW_HIDE, $pfad1)
    If $msg[1] = $starter Then Exit

    ; --------|PFAD ANGEBEN UND IN INI SCHREIBEN ENDE|------------- ;
    ; ------------------------------------------------------------- ;

    EndSelect
    WEnd

    [/autoit]

    Hab da schon ein paar andere Funktionen wegen der Frage ob das Spiel im Vollbild/Fenster modus gestartet werden soll, wie man bestimmt unschwer erkennen wird ^^

    Und hier mal das Bild vom Clienten (Hab an dem Bild mal Game Name und Firmen zensiert, weil werben tu ich nicht gerne *G*)

    [Blockierte Grafik: http://redseadevils.rs.ohost.de/start_druecken.jpg]

    Also er soll nur auf den Button "Start Game" drücken, mehr will ich da garnicht. Bei mir dauert es ca. 5-9 sek bis der Überprüft hat ob neue Updates vorhanden sind. und wie man sehen kann, trägt der Client garkeinen Namen.

    Hoffe mir kann das einer noch genauer erklären mit dem PixelGetSearch, oder nen Link geben, wo ich das alles nachlesen kann.

    Bedanke mich dann nochmal ^^

    mfg.
    Jochen

  • Zur Passworteingabe:

    [autoit]

    #include <EditConstants.au3>
    $pwi = GUICtrlCreateInput("", 40, 40, 121, 21, $ES_PASSWORD)

    [/autoit]

    Zu PixelSearch oder PixelChecksum findest du genug Hilfe, wenn du die Suche benützt. Allerdings könntest du den Button auch mit Mouseklick auf die Koordinaten des Buttons + die Koordinaten des Fensters drücken.

  • mhhhh...... hab zwar ne Thread gesehen und durch gelesen mit PixelSearch und PixelCheksum, aber ürgendwie raff ich das nicht.

    Ich weiss nur, das es oben Links anfängt und unten Rechts aufhört. Nur wenn ich da die Richtigen Coordinaten angebe, drückt der mir ürgendwie im Mozilla Firefox auf Bearbeiten oder Ansicht.

    Hier mal das, was ich da reingesetzt habe:

    [autoit]

    PixelChecksum(169, 609, 28, 99, "0xFFFFFF")
    $startgame = PixelSearch(169, 609, 28, 99, "0xFFFFFF")
    Sleep(3000)
    MouseClick("left", $startgame[0], $startgame[1])

    [/autoit]

    Als Error kommt:

    MouseClick("left", $startgame^

    Hoffe mir kann das jemand näher erleutern.

    Mfg.

  • ich vermute dass er keinen pixel findet^^
    lass dir doch mal @error ausgeben
    und was willst du mit pixelchecksum?

    Padmak

  • Hallo,

    Zitat von funkey

    Allerdings könntest du den Button auch mit Mouseklick auf die Koordinaten des Buttons + die Koordinaten des Fensters drücken.


    Ja, so würde ich es auch machen, laut Screen scheint die Position des Buttons immer an derselben Stelle zu sein, im Startmenü von AutoIt gibt es das Tool "AutoIt Window Info". Damit bekommst du die x- und y-Koordinaten des zu drückenden Buttons heraus. Mit

    [autoit]

    Mouseclick("",xpos,ypos)

    [/autoit]

    "klickst" du mit der linken Maustaste an diese Position.

    ciao
    .Andy

  • Klar kann ich das mit MouseClick("", x, y) machen, nur funzt das dann auch mit anderen Bildschirm Auflösungen?

    Weil bei meiner Mutter am PC funzt z.B. mein Desktop Reiniger(Weil meine kleinen Geschwister den Desktop mit Verknüpfungen zugemüllt hatten)
    (Für meinen PC (Auflösung: 1280x768 und bei meiner Mutter (1152x864)) nicht, dazu musste ich die Bildschirm Auflösung umstellen und die neuen Positionen bestimmen.

    Und mit PixelSearch gibt der mir ja nur das error aus, und der Button ist nur weiss, aber alle da.

    Das einzigste was da anderster ist [CLASS: Button, INCTANCE: 3] <--- kann man das auch benutzen? Wenn ja wie?

    Hier mal die Sachen fürn "Start Game" Button, und fürn "Beenden" Button

    Spoiler anzeigen

    >>>> Window <<<<
    Title:
    Class: #32770
    Position: 272, 31
    Size: 736, 706
    Style: 0x94000044
    ExStyle: 0x000D0000
    Handle: 0x000700D6

    >>>> Control <<<<
    Class: Button
    Instance: 3
    ClassnameNN: Button3
    Advanced (Class): [CLASS:Button; INSTANCE:3]
    ID: 103
    Text: 1
    Position: 169, 609
    Size: 99, 28
    ControlClick Coords: 53, 15
    Style: 0x5000000B
    ExStyle: 0x00000000
    Handle: 0x00010322

    >>>> Mouse <<<<
    Position: 494, 655
    Cursor ID: 0
    Color: 0xF8FAFB

    >>>> StatusBar <<<<

    >>>> Visible Text <<<<
    1
    1
    1
    1
    1
    1
    1
    1
    Progress Bar


    >>>> Hidden Text <<<<
    OK
    Cancel
    1

    >------ENDE STARTGAME BUTTON------<
    >------START BEENDEN BUTTON------<

    >>>> Window <<<<
    Title:
    Class: #32770
    Position: 272, 31
    Size: 736, 706
    Style: 0x94000044
    ExStyle: 0x000D0000
    Handle: 0x000700D6

    >>>> Control <<<<
    Class: Button
    Instance: 11
    ClassnameNN: Button11
    Advanced (Class): [CLASS:Button; INSTANCE:11]
    ID: 106
    Text: 1
    Position: 169, 638
    Size: 99, 27
    ControlClick Coords: 46, 13
    Style: 0x5000000B
    ExStyle: 0x00000000
    Handle: 0x00010332

    >>>> Mouse <<<<
    Position: 487, 682
    Cursor ID: 0
    Color: 0xF8FAFB

    >>>> StatusBar <<<<

    >>>> Visible Text <<<<
    1
    1
    1
    1
    1
    1
    1
    1
    Progress Bar


    >>>> Hidden Text <<<<
    OK
    Cancel
    1

    Bei PixelSearch hatte ich die Control Position+Size genommen und dann einmal die Window Position+Size, da gabs dann dauernt error oder der hta mal will kürlich woanderster Hingedrückt.

  • Zitat von Tak

    Das einzigste was da anderster ist [CLASS: Button, INCTANCE: 3] <--- kann man das auch benutzen? Wenn ja wie?


    Ja^^
    das ist die ID des Buttons^^
    für ControlClick

    Padmak

  • So hab das mal da eingefügt, aber der klickt mir nur im Fenster rein, mehr aber nichts.

    Hier mal das was ich da eingefügt habe:

    [autoit]

    ControlClick("", "", "[CLASS:Button; INSTANCE:3]", 1, 45, 14)

    [/autoit]

    Die Koordinaten bleiben gleich, nur beim MouseClick da ändern die sich, wenn sich das Fenster verschiebt.


    Die Hilfe hab ich mir auch schon runtergeladen, hab mir das mal da durchgelesen, aber ich raff das einfach nicht mit dem ControlClick.

    mfg.
    Tak

    EDIT 02:42: Hat sich erledigt, habs hinbekommen das es auch mit ControlClick funzt

  • Du brauchst keine Koordinaten

    [autoit]


    ControlClick("Titel", "", "[CLASS:Button; INSTANCE:3]")

    [/autoit]


    Aber einen Fenstertitel :D
    Sonst weiß das Programm ja gar nicht wohin es klicken soll

    Padmak

  • Hätteste Screen oben angeguckt, hättest du gewusst, das dort kein Fenstertitel beim Clienten existiert. (Im Screen unten in der Taskleiste ganz rechts)

    Hab es aber anderster gelöst und so funzt es auch

    [autoit]

    ControlClick("", "", "[CLASS:Button; INSTANCE:3]", "left", 1, 45, 14)

    [/autoit]

    Hätte ich das mal so gemacht hätt es auch gleich geklappt ^^

    Hier mal der "fast" fertige Code

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <EditConstants.au3>

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

    Opt("GUICoordMode", 1)
    Opt("PixelCoordMode", 2)
    Global $idpw, $id, $pw, $idi, $pwi, $pfad, $start, $save, $load, $pfad1, $msg, $pfad2, $pfad3, $inputbbo, $pfada, $inputa, $save1, $load1, $closed, $msg
    Global $starter = GUICreate("BBO Starter", 329, 100, 389, 236)

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

    $idpw = GUICtrlCreateGroup("Login ID und Passwort", 0, 0, 169, 65)
    $id = GUICtrlCreateLabel("ID:", 8, 16, 20, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $pw = GUICtrlCreateLabel("PW:", 8, 40, 29, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")

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

    ; ------------------------------------------------------------- ;
    ; ------------------|ID und PW Angeben START|------------------ ;

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

    $pwi = GUICtrlCreateInput("Passwort", 40, 40, 121, 21, BitOr($ES_PASSWORD, $ES_AUTOHSCROLL))
    $idi = GUICtrlCreateInput("Login ID", 40, 16, 121, 21)

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

    ; ------------------|ID und PW Angeben ENDE|------------------- ;
    ; ------------------------------------------------------------- ;

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

    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $pfad = GUICtrlCreateButton("Installations Pfad Angeben", 176, 8, 145, 25, 0)
    $start = GUICtrlCreateButton("BBO Starten", 176, 40, 145, 25, 0)
    $save = GUICtrlCreateButton("Login Speichern", 0, 72, 89, 25, 0)
    $load = GUICtrlCreateButton("Login Laden", 95, 72, 81, 25, 0)

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

    ; ------------------------------------------------------------- ;
    ; ----------------|Installations Pfad Angeben|----------------- ;

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

    GUISetState(@SW_SHOW, $starter & $pfad)
    $pfad2 = GUICreate("BBO und Almanach Installations Pfad Angeben", 365, 139, 193, 125)
    $pfad3 = GUICtrlCreateGroup("BBO Installations Pfad Angeben:", 0, 0, 361, 49)
    $inputbbo = GUICtrlCreateInput("C:\Programme\Yusho Frogster Games\Bounty Bay Online\", 8, 16, 337, 21)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $pfada = GUICtrlCreateGroup("BBO Almanach Installations Pfad Angeben:", 0, 56, 361, 49)
    $inputa = GUICtrlCreateInput("C:\Programme\Almanach\BBO Almanach\", 8, 72, 337, 21)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $save1 = GUICtrlCreateButton("Speichern", 0, 112, 105, 25, 0)
    $load1 = GUICtrlCreateButton("Laden", 120, 112, 107, 25, 0)
    $closed = GUICtrlCreateButton("Schliessen", 248, 112, 105, 25, 0)
    GUISetState(@SW_HIDE, $pfad1)

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

    ; --------------|Installations Pfad Angeben ENDE|-------------- ;
    ; ------------------------------------------------------------- ;

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

    While 1
    $msg = GUIGetMsg(1)
    Select

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

    ; ------------------------------------------------------------- ;
    ; ------------------------|BBO STARTEN|------------------------ ;

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

    Case $msg[0] = $start
    $bbo = MsgBox(4, "Soll der Almanach auch gestartet werden?", 'Soll der Almanach auch gestartet werden?')
    $modus = MsgBox(4, "Fenster?", "Spielen Sie im Fenster Modus?")

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

    If $bbo = 6 Then ; <---- BBO MIT ALMANACH STARTEN
    $run = IniRead("ini\confic.ini", "BBO Pfad", "bbo", 0)
    $run1 = IniRead("ini\confic.ini", "Almanach Pfad", "almanach", 0)
    Run($run1 &"BBO Almanach.exe", $run1) ; Almanach Starten
    WinWaitActive("BBO Almanach")
    Sleep(6000)
    Run($run &"voyagecentury.exe", $run) ; BBO Starten
    WinWaitActive("")
    Sleep(6000)
    ControlClick("", "", "[CLASS:Button; INSTANCE:3]", "", 1, 45, 14)

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

    ElseIf $bbo = 7 Then ; <---- Nur BBO Starten
    $run = IniRead("ini\confic.ini", "BBO Pfad", "bbo", 0) ; Pfad aus der INI lesen
    Run($run &"voyagecentury.exe", $run) ; BBO Starten
    Sleep(6000)

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

    WinWaitActive("")
    ControlClick("", "", "[CLASS:Button; INSTANCE:3]", "", 1, 45, 14)

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

    EndIf
    ; -----------------------|BBO STARTEN ENDE|-------------------- ;
    ; ------------------------------------------------------------- ;
    ; -----------------|BBO STARTEN FENSTER/VOLLBILD|-------------- ;

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

    If $modus = 6 Then ; <---- FensterModus
    Sleep(3000)
    Send("{TAB}")
    Sleep(500)
    Send("{ENTER}"); <---- Bestätigen
    WinWaitActive("Voyage")
    Sleep(7000)

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

    MouseClick("left", 962, 721) ; <--- Starten Drücken
    Sleep(1000)
    MouseClick("left", 365, 317) ; <--- Nordlicht Auswählen

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

    $login1 = IniRead("ini\confic.ini", "id", "login", GUICtrlRead($idi))
    $pass1 = IniRead("ini\confic.ini", "pw", "pass", GUICtrlRead($pwi))
    Send($login1)
    Send("{TAB}")
    Sleep(1000)
    Send($pass1)
    Send("{ENTER}")
    Sleep(5000)
    Send("{ENTER}")

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

    ElseIf $modus = 7 Then ; <---- Vollbild
    Sleep(3000)
    Send("{ENTER}"); <---- Bestätigen
    WinWaitActive("Voyage")
    Sleep(7000)

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

    MouseClick("left", 792, 721) ; <--- Starten Drücken
    Sleep(1000)
    MouseClick("left", 165, 315) ; <--- Nordlicht Auswählen

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

    $login1 = IniRead("ini\confic.ini", "id", "login", GUICtrlRead($idi))
    $pass1 = IniRead("ini\confic.ini", "pw", "pass", GUICtrlRead($pwi))
    Send($login1)
    Send("{TAB}")
    Sleep(1000)
    Send($pass1)
    Send("{ENTER}")
    Sleep(5000)
    Send("{ENTER}")
    EndIf

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

    ; -----------------|BBO STARTEN FENSTER/VOLLBILD|-------------- ;
    ; ------------------------------------------------------------- ;
    ; ---|LOGIN DATEN ANGEBEN UND IN INI SCHREIBEN ODER LADEN|----- ;

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

    Case $msg[0] = $save
    IniDelete("ini\confic.ini", "id", "login") ; ID aus der INI löschen
    IniDelete("ini\confic.ini", "pw", "pass") ; PW aus der INI löschen

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

    IniWrite("ini\confic.ini", "id", "login", GUICtrlRead($idi)) ; ID in die INI schreiben
    IniWrite("ini\confic.ini", "pw", "pass", GUICtrlRead($pwi)) ; PW in die INI schreiben

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

    Case $msg[0] = $load
    $login = IniRead("ini\confic.ini", "id", "login", GUICtrlRead($idi))
    $pass = IniRead("ini\confic.ini", "pw", "pass", GUICtrlRead($pwi))
    GuiCtrlSetData($idi, $login)
    GuiCtrlSetData($pwi, $pass)

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

    ; -|LOGIN DATEN ANGEBEN UND IN INI SCHREIBEN ODER LADEN ENDE|-- ;
    ; ------------------------------------------------------------- ;
    ; -----------|PFAD ANGEBEN UND IN INI SCHREIBEN|--------------- ;

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

    Case $msg[0] = $pfad
    GUISetState(@SW_SHOW, $pfad1)

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

    $bbo1 = IniRead("ini\confic.ini", "BBO Pfad", "bbo", GUICtrlRead($inputbbo)) ; InstallationsPfad aus der INI laden
    $almanach = IniRead("ini\confic.ini", "Almanach Pfad", "almanach", GUICtrlRead($inputa)) ; InstallationsPfad aus der INI laden

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

    GUICtrlSetData($inputbbo, $bbo1)
    GUICtrlSetData($inputa, $almanach)

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

    Case $msg[0] = $save1
    IniDelete("ini\confic.ini", "BBO Pfad", "bbo") ; InstallationsPfad aus der Ini löschen
    IniDelete("ini\confic.ini", "Almanach Pfad", "almanach") ; InstallationsPfad aus der Ini löschen

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

    IniWrite("ini\confic.ini", "BBO Pfad", "bbo", GUICtrlRead($inputbbo)) ; InstallationsPfad in die INI schreiben
    IniWrite("ini\confic.ini", "Almanach Pfad", "almanach", GUICtrlRead($inputa)) ; InstallationsPfad in die INI schreiben

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

    Case $msg[0] = $load1
    $bbo1 = IniRead("ini\confic.ini", "BBO Pfad", "bbo", GUICtrlRead($inputbbo)) ; InstallationsPfad aus der INI laden
    $almanach = IniRead("ini\confic.ini", "Almanach Pfad", "almanach", GUICtrlRead($inputa)) ; InstallationsPfad aus der INI laden

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

    GUICtrlSetData($inputbbo, $bbo1)
    GUICtrlSetData($inputa, $almanach)

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

    Case $msg[0] = $closed
    GUISetState(@SW_HIDE, $pfad1)

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

    Case $msg[0] = $GUI_EVENT_CLOSE
    If $msg[1] = $pfad1 Then GUISetState(@SW_HIDE, $pfad1)
    If $msg[1] = $starter Then Exit

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

    ; --------|PFAD ANGEBEN UND IN INI SCHREIBEN ENDE|------------- ;
    ; ------------------------------------------------------------- ;

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

    EndSelect
    WEnd

    [/autoit]

    Jetzt fhlen nurnoch kleine Feinheiten, dann klappt alles Super