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. Mistil

Beiträge von Mistil

  • Bilder verschwinden hinter Radio-Control, wenn der Mauszeiger drüber fährt

    • Mistil
    • 25. März 2015 um 07:46

    BugFix, du bist der Hammer. Danke dir.

    Dass es sowas wie $GUI_EVENT_PRIMARYUP gibt war mir garnicht bekannt (Hätte ich die Hilfe vielleicht mal ganz lesen sollen und nicht immer nur, welche Parameter angegeben werden müssen :S ). So wird die Schleife ja erst dann geprüft, wenn es wirklich was zum auslesen gibt. Ich bin mir sicher, dass diese Vorgehensweise auch noch bei anderen GUIs von mir zum einsatz kommt.

    Damit wäre mein Problem wohl zufriedenstellend gelöst.

    Ich würde aber gerne noch eine weitere Frage zu meinem Programm stellen (genauer zum Installer).
    Dieser wird von Kaspersky als Trojaner erkannt. Gibt es irgendwie eine Möglichkeit zu suchen, an welcher Stelle im Code das der Fall ist oder nur mittels try-and-error stückweise Codesegmente zu entfernen bis der Fehler nicht mehr auftritt?
    Kann das Problem auch durch Programme oder Dateien verursacht werden, die ich über FileInstall eingebunden habe?

  • Bilder verschwinden hinter Radio-Control, wenn der Mauszeiger drüber fährt

    • Mistil
    • 24. März 2015 um 08:35

    Na der hat ja mitgedacht ;)

    Ich habe jetzt nur von der GUIGetMsg-Schleife gesprochen, in der ich keinen Case für die jeweiligen Labels anlegen kann. Was natürlich ginge ist wie du schon sagst, neben den Radio-Handles auch die Lable-Handles im Array auffangen und in besagter Schleife diese nochmal in einer separaten Schleife zu prüfen. Ich hatte das mal ausprobiert, was die Reaktionszeit meines Skriptes allerdings stark gebremst hat. Zudem müssten dann noch andere Anpassungen gemacht werden. Wenn das wirklich die einzige Möglichkeit ist, dann lasse ich es lieber so, dass die Bilder ganz am Anfang stehen.

    Danke natürlich an euch für eure Hilfe und Tipps.

  • Bilder verschwinden hinter Radio-Control, wenn der Mauszeiger drüber fährt

    • Mistil
    • 23. März 2015 um 08:02

    So weit war ich schon, aber:

    Zitat

    Die Radios ohne Text erstellen und stattdessen neben dem Bild ein Laber möchte ich nicht, da die Radios dann ja nur durch klicken auf den Punkt ausgewählt werden können.

    Und alle Labels in der While-Schleife auf aktivitäten prüfen und dann das jeweilige Radio als checked setzen (bzw. das vorherige wieder unchecked) geht schwer, weil die Anzahl an Sendern nicht bekannt ist. Das kommt zum einen auf die Musikrichtung an und zum anderen können über die Ini ganz einfach Sender ergänzt werden.
    Die Radios lese ich erst beim Klicken auf Start in einer extra Schleife aus.

  • Bilder verschwinden hinter Radio-Control, wenn der Mauszeiger drüber fährt

    • Mistil
    • 22. März 2015 um 21:41

    Danke für deine Antwort BugFix. Also ist es nicht möglich, den Tekt zu einem Radio-Control mit Leerzeichen zu beginnen und in den entstehenden Freiraum ein anderes Control (hier ein Bild) zu setzen?

    Das ist schade. Ich hatte gehofft, man könnte das Problem umgehen, indem man das Radio-Control transparent macht.

    Allerdings wundert es mich, dass es an meinem PC (an dem ich auch programmiere) funktioniert.

  • Bilder verschwinden hinter Radio-Control, wenn der Mauszeiger drüber fährt

    • Mistil
    • 18. März 2015 um 18:49

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Hallo allerseits. Nachdem ich bei den letzten Projekten alle Probleme durch nachlesen lösen konnte, bin ich bei diesem leider ziemlich Ideenlos.
    Ich habe ein Hilfsprogramm geschrieben, das mir verschiedene Internet-Radiostreams anzeigt (Daten dazu sind in einer Ini gespeichert) und ich über Radios einen auswählen, den Player starten und diesen Sender hören kann. Gefällt mir was da gerade läuft, kann ich durch Knopfdruck den Streamripper starten und den Stream downloaden.

    Auf meinem PC läuft das Programm (auch im Compilierten Zustand) ohne Probleme. Auf anderen Rechnern, verschwinden allerdings die Bilder (Logos der Streams), die sich im freien Bereich zwischen Text und Radiokreis befinden sobald der Mauszeiger über die Radio-Controls oder deren Text fährt. Außerdem wird auf dem Settings-Button das Bild nicht angezeigt.

    Hat von euch jemand eine Idee, wo hier das Problem liegen könnte? Ich weiß, dass es nicht gterade Professionell programmiert ist, aber ich bin ja noch am Üben. Das Fehlerhandling durch Auslesen der Rückgabewerte will ich machen, wenn das Programm erst mal Problemlos läuft.

    Spoiler anzeigen
    [autoit]

    #RequireAdmin
    #include <array.au3>
    #include <GUIConstantsEx.au3>
    #include <eigene.au3>
    #include <GuiButton.au3>
    #include <WindowsConstants.au3>

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

    Local $aGenres[3]=[2, "Genre1", "Genre2"]
    Local $aSender[4][8]
    Local $i=0
    $aSender[0][0]=3
    While $i<3
    $i+=1
    $aSender[$i][0]="Sender" & $i
    $aSender[$i][1]="Genre1"
    $aSender[$i][2]="URL" & $i
    $aSender[$i][3]=$i & ".gif"
    $aSender[$i][4]=20
    $aSender[$i][5]=20
    $aSender[$i][7]=1
    WEnd
    $aSender[3][1]="Genre2"

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

    Global $grx=300
    Global $gry=210

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

    Global $hMainGUI = GUICreate("PAIR", $grx, $gry)
    Global $hStartButton=GUICtrlCreateButton("&Play", 10, $gry-(25+20), 50, 25)
    Global $hCancelButton=GUICtrlCreateButton("&Beenden", $grx-(10+60), $gry-(25+20), 60, 25)
    Global $hSettingsButton=GUICtrlCreateButton("", $grx-(10+30), 6, 30, 30, $BS_ICON)
    _GUICtrlButton_SetImage($hSettingsButton, @ScriptDir & "\options_klein.ico")
    Global $hGenreCombo=GUICtrlCreateCombo($aGenres[1], 90, 10, 120)
    Global $vGenreCombo=""
    $hRecordButton=GUICtrlCreateButton("Stream &aufnehmen", 10+50+20, $gry-(25+20), 100, 25)
    $i=0
    While $i<$aGenres[0]
    $i+=1
    $vGenreCombo=$vGenreCombo & "|" & $aGenres[$i]
    WEnd
    GUICtrlSetData($hGenreCombo, $vGenreCombo, $aGenres[1])
    Global $vGenre=GUICtrlRead($hGenreCombo)
    GUICtrlCreateLabel("Musikrichtung: ", 10, 12)
    $i=0
    Local $iPos=0
    While $i<$aSender[0][0]
    $i+=1
    If $aSender[$i][1]=$vGenre Then
    $iPos+=1
    $aSender[$i][6]=GUICtrlCreateRadio(" " & $aSender[$i][0] & " ", 10, 50 + (($iPos-1)*30))
    GUICtrlCreatePic(@ScriptDir & "\" & $aSender[$i][3], 45-($aSender[$i][4]/2), 50 + (($iPos-1)*30), $aSender[$i][4], $aSender[$i][5])
    GUICtrlSetBkColor($aSender[$i][6], $GUI_BKCOLOR_TRANSPARENT)
    EndIf
    WEnd

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

    Global $playing=1
    Global $con=1

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

    GUISetState(@SW_SHOW, $hMainGUI)

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

    While 1
    $msg=GUIGetMsg()

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

    Select
    Case $msg=$hStartButton
    ;startet den Player und spielt den jeweiligen Sender ab
    Case $msg=$hGenreCombo
    Global $PosMainGUI=WinGetPos("PAIR", "Musikrichtung: ")
    $vGenre=GUICtrlRead($hGenreCombo)
    GUIDelete($hMainGUI)
    $hMainGUI = GUICreate("PAIR", $grx, $gry, $PosMainGUI[0], $PosMainGUI[1])
    $hStartButton=GUICtrlCreateButton("&Play", 10, $gry-(25+20), 50, 25)
    $hCancelButton=GUICtrlCreateButton("&Beenden", $grx-(10+60), $gry-(25+20), 60, 25)
    Global $hSettingsButton=GUICtrlCreateButton("", $grx-(10+30), 6, 30, 30, $BS_ICON)
    _GUICtrlButton_SetImage($hSettingsButton, @ScriptDir & "\options_klein.ico")
    $hGenreCombo=GUICtrlCreateCombo($vGenre, 90, 10, 120)
    $hRecordButton=GUICtrlCreateButton("Stream &aufnehmen", 10+50+20, $gry-(25+20), 100, 25)
    GUICtrlSetData($hGenreCombo, $vGenreCombo, $vGenre)
    $vGenre=GUICtrlRead($hGenreCombo)
    GUICtrlCreateLabel("Musikrichtung: ", 10, 12)
    $i=0
    $iPos=0
    While $i<$aSender[0][0]
    $i+=1
    If $aSender[$i][1]=$vGenre Then
    $iPos+=1
    $aSender[$i][6]=GUICtrlCreateRadio(" " & $aSender[$i][0] & " ", 10, 50 + (($iPos-1)*30))
    GUICtrlCreatePic(@ScriptDir & "\" & $aSender[$i][3], 45-($aSender[$i][4]/2), 50 + (($iPos-1)*30), $aSender[$i][4], $aSender[$i][5])
    GUICtrlSetBkColor($aSender[$i][6], $GUI_BKCOLOR_TRANSPARENT)
    EndIf
    WEnd
    GUISetState(@SW_SHOW, $hMainGUI)
    ;_ArrayDisplay($aSender)
    Case $msg=$hSettingsButton
    ;Öffnet die GUI für die Einstellungen
    Case $msg=$hRecordButton
    ;startet Streamripper und beginnt die Aufnahme
    Case $msg=$GUI_EVENT_CLOSE
    Exit
    Case $msg=$hCancelButton
    Exit
    EndSelect

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

    If WinExists("Error") Then
    $playing=1
    ProcessClose(WinGetProcess("Error"))
    sleep(200)
    MsgBox(0, "Fehler", "Es ist ein Fehler bei der Verbindung " & @CRLF & "mit " & $con & " aufgetreten." & @CRLF & @CRLF & "Starten Sie die Wiedergabe erneut.")
    EndIf

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

    WEnd

    [/autoit]

    Soweit mal das gekürzte Skript. Die Includes habe ich nach dem Kürzen nicht aussortiert, also nicht wundern, wenn was dabei steht, ohne daraus eine Funktion verwendet zu haben.

    Falls Wichtig
    Aufbau des Sender-Arrays:
    $aSender[0][0] - Anzahl an Sendern
    für i>0
    $aSender[i][0] - Sendername
    $aSender[i][1] - Genre
    $aSender[i][2] - URL des Senders
    $aSender[i][3] - Bild (Logo des Senders)
    $aSender[i][4 und 5] - Größe des Bildes (auch wenn die Bilddatei kleiner ist, wurde es aus irgend einem Grund immer Groß gezogen)
    $aSender[i][6] - Handle des Radio
    $aSender[i][7] - Shoutcast-Stream Ja/Nein

    Aufbau des Genre-Arrays:
    $aGenre[0] - Anzahl an Genres
    $aGenre[1...] - Genre

    Wäre super, wenn jemandem das Problem auffällt. Einem Profi springt das bestimmt direkt ins Auge.

    Edit: habe das gepostete Skript angepasst, dass es direkt zu starten geht. es müssten nur noch Bilder zum testen eingesetzt werden
    Edit2: Das Skript sollte jetzt mit den unten angehängten Bildern (im Skriptordner abgelegt) funktionieren. options_klein ist eigentlich eine .ico, die allerdings beim Hochladen nicht akzeptiert wurde. Nach dem Runterladen die Datei also wieder zu .ico umbenennen.

    Edit3: Nachdem ich heute nochmal eine Weile gesucht habe und etwas rumprobiert habe, bin ich auf folgenden Link gestoßen:
    http://www.codebot.de/index.php/Thre…icht-angezeigt/
    Ich habe dem Butten den Style $BS_ICON verpasst (oben schon geändert) und jetzt geht es auch auf anderen Rechnern. Warum es vorher bei mir schon ging weiß ich ehrlich gesagt nicht.
    Das Problem mit den Bildern besteht allerdings weiterhin. Ich habe mir zwar jetzt beholfen, indem ich die Bilder vor die Radios gezogen habe, aber zwischen Radio und Text wäre mir lieber. Die Radios ohne Text erstellen und stattdessen neben dem Bild ein Laber möchte ich nicht, da die Radios dann ja nur durch klicken auf den Punkt ausgewählt werden können. Es wäre also super, wenn hier jemand noch eine Lösung hat.

  • 2. GUI schließen und die Haupt-GUI weiter laufen lassen

    • Mistil
    • 4. August 2013 um 19:47

    Hi,

    Jetzt, wo ich mich um den Anfangsdialog meines Programm kümmere, wollte ich für bestimmte Voreinstellungen eine Passwortabfrage einbauen. Die Abfrage habe ich dabei in einer Funktion geregelt. Das Problem ist jetzt, dass ich die 2. GUI (aus der Funktion) nach der Abgfrage nicht schließen kann.

    Ich habe das Ganze mal so weit gekürzt, wie ich konnte. ich Hoffe es geht so:

    [autoit]

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

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

    Global $x = 0
    Global $grx = 500
    Global $gry = 600 ; Fenstergröße
    Global $zahl = 0 ; Sicherheitsvariable
    Global $cont = 1500 ;Pause zur Kontrolle vor dem Fortfahren
    Global $hGUI = 1 ; Handle für Hauptfenster
    Global $msg [2] = [0, 0]
    Global $PC = 100
    Global $hWeiterButton = 1
    Global $hCancelButton = 1
    Global $hPC_Combo = 1
    Global $hProgTab = 1
    Global $hTab1 = 1
    Global $hTab2 = 1
    Global $Checkbox1 [2] = [1, 1]
    Global $Checkbox2 [2] = [1, 1]

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

    $hGUI=GUICreate("Automatische PC-Einrichrung", $grx, $gry)
    GUICtrlCreateLabel("Willkommen bei der Automatischen Einrichtung für Ihren PC.", 20, 10)
    $hWeiterButton=GUICtrlCreateButton("&Weiter", $grx-(60+20), $gry-(25+20), 60, 25)
    $hCancelButton=GUICtrlCreateButton("&Abbrechen", $grx-(60+60+10+20), $gry-(25+20), 60, 25)
    GUICtrlCreateLabel("Wählen sie eine der Voreinstellungen:", 20, 40)
    $hPC_Combo=GUICtrlCreateCombo ("Benutzerdefiniert", 205,38, 110, 20)
    GUICtrlSetData($hPC_Combo,"Einstellung1|Einstellung2","Benutzerdefiniert")

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

    If 1 Then
    $hProgTab=GUICtrlCreateTab(20, 70, 460, 30)
    $hTab1=GUICtrlCreateTabItem ("Tab1")
    $Checkbox1[0]=GUICtrlCreateCheckbox("Checkbox1", 20, 100)

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

    $hTab2=GUICtrlCreateTabItem ("Tab2")
    $Checkbox2[0]=GUICtrlCreateCheckbox("Checkbox2", 20, 100)

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

    GUICtrlCreateTabItem ("")
    EndIf

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

    GUISetState(@SW_SHOW)

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

    If 1 Then ;Alle Checkboxen Aktivieren und Unchecken
    GUICtrlSetState($Checkbox1 [0], $GUI_ENABLE)
    GUICtrlSetState($Checkbox2 [0], $GUI_ENABLE)

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

    GUICtrlSetState($Checkbox1 [0], $GUI_UNCHECKED)
    GUICtrlSetState($Checkbox2 [0], $GUI_UNCHECKED)
    EndIf

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

    While 1
    $msg = GUIGetMsg(1)
    If $msg[0] = $hCancelButton Then $msg[0] = $GUI_EVENT_CLOSE

    Select ; Buttons
    Case $msg[0] = $hWeiterButton
    MsgBox(0, "", "Weiter")
    EndSelect

    Select ;Combobox beim ändern einer Checkbox auf Benutzerdefiniert setzen und Variable der Checkbox anpassen
    Case $msg[0] = $Checkbox1[0]
    $Checkbox1[1]=GUICtrlRead($msg[0])
    GUICtrlSetData($hPC_Combo,"Benutzerdefiniert")
    If $Checkbox1[1]<>1 Then $Checkbox1[1]=0

    Case $msg[0] = $Checkbox2[0]
    $Checkbox2[1]=GUICtrlRead($msg[0])
    GUICtrlSetData($hPC_Combo,"Benutzerdefiniert")
    If $Checkbox2[1]<>1 Then $Checkbox2[1]=0
    EndSelect

    Select ;Pulldown-Menü
    Case $msg[0] = $hPC_Combo
    $PC=GUICtrlRead($hPC_Combo)

    Switch $PC
    Case "Benutzerdefiniert"
    MsgBox(0, "", $PC)
    Case "Einstellung1"
    $x=_PW_Check($PC, "Passwort1")
    If $x=1 Then
    _EigenIniRead(@ScriptDir & "\select.ini", "Desktop")
    _CheckBoxes()
    Else
    GUICtrlSetData($hPC_Combo,"Benutzerdefiniert")
    EndIf
    Case "Einstellung2"
    $x=_PW_Check($PC, "Passwort2")
    If $x=1 Then
    _EigenIniRead(@ScriptDir & "\select.ini", "Desktop")
    _CheckBoxes()
    Else
    GUICtrlSetData($hPC_Combo,"Benutzerdefiniert")
    EndIf
    EndSwitch

    Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $hGUI
    Exit
    EndSelect
    WEnd

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

    Exit

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

    Func _PW_Check($PCName, $PWist)
    Local $hPW = 1 ; Handle für Passwortabfrage
    Local $PW = 0 ; eingegebenes Passwort
    Local $msgPW = 0
    Local $hPWInputBox = 0
    Local $hPWOKButton = 0
    Local $hPWCancelButton = 0
    Local $PWx = 10
    Local $PWy = 80
    Local $PWzahl = 0
    Local $PWhelp = "Tipp"

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

    $hPW=GUICreate("Passworteingabe für " & $PCName, 350, 140)
    GUICtrlCreateLabel("Die von Ihnen ausgewählte Voreinstellung ist Passwortgeschützt.", 10, 10)
    GUICtrlCreateLabel("Geben Sie das Passwort ein, oder wählen Sie Abbrechen um mit einer" & @CRLF & " anderen Auswahl fort zu fahren", 10, 35)
    GUICtrlCreateLabel("Passwort:", $PWx, $PWy)
    $hPWInputBox=GUICtrlCreateInput("", $PWx, $PWy+16, 150, 20, $ES_PASSWORD)
    GUICtrlCreateLabel("Hinweis: " & $PWhelp, $PWx, $PWy+36)
    $hPWOKButton=GUICtrlCreateButton("OK", 300, 110, 40, 23)
    $hPWCancelButton=GUICtrlCreateButton("Abbrechen", 230, 110, 60, 23)
    GUISetState(@SW_SHOW)

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

    While 1
    $msgPW = GUIGetMsg()
    If $msgPW = $hPWCancelButton Then $msgPW = $GUI_EVENT_CLOSE

    Select
    Case $msgPW = $hPWOKButton
    $PW=GUICtrlRead($hPWInputBox)
    If $PW==$PWist And $PWzahl<2 Then
    Return 1
    ExitLoop
    ElseIf $PWzahl<1 Then
    MsgBox(0, "Falsche Eingabe", "Das eingegebene Passwort ist Falsch." & @CRLF & "Achten sie auf Groß- und Kleinschreibung." & @CRLF & @CRLF & "Sie haben 1 Versuch übrig")
    ControlSetText($hPW, "", $hPWInputBox, "")
    $PWzahl=$PWzahl+1
    Else
    Return 100
    ExitLoop
    EndIf
    Case $msgPW = $GUI_EVENT_CLOSE
    Return 0
    ExitLoop
    EndSelect
    WEnd
    EndFunc

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

    Func _EigenIniRead($iniFile, $section) ;Voreingestellte Werte aus Ini lesen
    EndFunc

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

    Func _CheckBoxes() ;Checken der Checkboxes nach Ini-Angabe
    EndFunc

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

    exit

    [/autoit]


    Wäre super, wenn mir einer helfen könnte. Ich will die 2. GUI zur PW-Abfrage schließen, ohne das gesamte Script beenden zu müssen.

    Edit:
    Kommando Zurück. Ich habe eine Lösung gefunden. Mit der Funktion GUIDelete() lässt sich das Fenster schließen, wenn ich sie nach dem Beenden der Funktion _PW_Check() verwende und nicht am Ende dieser Funktion. Warum das so ist, weiß ich leider nicht.

    Wenn ein Admin oder Mod so nett wäre, diese unnütze Frage bitte zu löschen?

  • bei CheckListBox Checkstatus auslesen oder setzen

    • Mistil
    • 1. August 2013 um 23:04

    Ja, hab ich dann auch gesehen. Ist beim rumprobieren passiert. war aber wohl nicht das Problem

    Edit:

    Ich habe für mein problem zwar keine extra Funktion gefunden um es elegant zu lösen, habe jetzt aber eine Art workaround, das funktioniert. nachdem auf weiter geklickt wurde, werden die Strings der markierten Checkboxen im nächsten Fenster angezeigt. So kann ich kontrollieren, ob alle abgehakt waren und später auch bestimmte ausschließen.

    [autoit]


    #Include <GuiListBox.au3>
    #include <GuiListView.au3>

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

    Global $wv[4]
    Global $cont=1500
    Global $ContHandle=0
    Global $string=0

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

    while 1
    If WinExists("Setup - TmNationsForever", "Das Setup ist jetzt bereit") Then
    WinActivate("Setup - TmNationsForever", "Installation durchführen")
    WinWaitActive("Setup - TmNationsForever", "Installation durchführen")
    $wv[0]=WinExists("Setup - TmNationsForever", "Verknüpfung auf dem Desktop erstellen")
    $wv[1]=WinExists("Setup - TmNationsForever", "Dateien vom Typ '.gbx' mit TmNationsForever verknüpfen")
    $wv[2]=WinExists("Setup - TmNationsForever", "Das URL-Protokoll 'tmtp://' mit TmNationsForever verknüpfen")
    $wv[3]=WinExists("Setup - TmNationsForever", "Shell-Erweiterung für die Darstellung von '.gbx'-Thumbnails installieren")

    Select
    Case $wv[0]=0
    ControlClick("Setup - TmNationsForever", "Installation durchführen", "< &Zurück")
    WinWait("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen")
    WinActivate("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen")
    WinWaitActive("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen")
    $ContHandle=ControlGetHandle("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen", "TNewCheckListBox1")
    $string=_GUICtrlListBox_GetText($ContHandle, 1)
    ControlCommand("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen", $ContHandle, "SelectString", $string)
    sleep(100)
    send("{space}")
    sleep($cont)
    ControlClick("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen", "&Weiter >")
    Case $wv[1]=0
    ControlClick("Setup - TmNationsForever", "Installation durchführen", "< &Zurück")
    WinWait("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen")
    WinActivate("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen")
    WinWaitActive("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen")
    $ContHandle=ControlGetHandle("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen", "TNewCheckListBox1")
    $string=_GUICtrlListBox_GetText($ContHandle, 3)
    ControlCommand("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen", $ContHandle, "SelectString", $string)
    sleep(100)
    send("{space}")
    sleep($cont)
    ControlClick("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen", "&Weiter >")
    Case $wv[2]=0
    ControlClick("Setup - TmNationsForever", "Installation durchführen", "< &Zurück")
    WinWait("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen")
    WinActivate("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen")
    WinWaitActive("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen")
    $ContHandle=ControlGetHandle("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen", "TNewCheckListBox1")
    $string=_GUICtrlListBox_GetText($ContHandle, 4)
    ControlCommand("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen", $ContHandle, "SelectString", $string)
    sleep(100)
    send("{space}")
    sleep($cont)
    ControlClick("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen", "&Weiter >")
    Case $wv[3]=0
    ControlClick("Setup - TmNationsForever", "Installation durchführen", "< &Zurück")
    WinWait("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen")
    WinActivate("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen")
    WinWaitActive("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen")
    $ContHandle=ControlGetHandle("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen", "TNewCheckListBox1")
    $string=_GUICtrlListBox_GetText($ContHandle, 5)
    ControlCommand("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen", $ContHandle, "SelectString", $string)
    sleep(100)
    send("{space}")
    sleep($cont)
    ControlClick("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen", "&Weiter >")
    Case $wv[0]=1 And $wv[1]=1 And $wv[2]=1 And $wv[3]=1
    ControlClick("Setup - TmNationsForever", "Das Setup ist jetzt bereit", "&Installieren")
    ExitLoop
    EndSelect
    Else
    Sleep(100)
    EndIf
    WEnd

    [/autoit]

    Ist wie gesagt nicht elegant, aber es funktioniert.

  • bei CheckListBox Checkstatus auslesen oder setzen

    • Mistil
    • 1. August 2013 um 22:20

    gibt ControlGetHandle nicht das Handle des entsprechenden Controls zurück?
    Wenn ich die Variable $ContHandle in ner MsgBox anzeigen lasse, bekomme ich zumindest das gleiche Handle, wie vom WindowTool angezeigt.

    Jetzt hab ich den Fehler gesehen. Ist wohl beim rum probieren passiert. hab die Bezeichnung durch die Variable ersetzt und die Anführungszeichen übersehen. Es funktioniert aber trotzdem nicht.

    Ich würde die Datei ja anhängen, aber die hat 500MB. Denke mal nicht, dass das einer nur zum helfen runter laden will. falls sich doch jemand berufen fühlt, gibts die Datei Hier .

  • bei CheckListBox Checkstatus auslesen oder setzen

    • Mistil
    • 1. August 2013 um 19:05

    So, ich habe es nochmal mit _GUICtrlListView_SetItemChecked versucht, bin mir aber so langsam nicht mehr sicher, ob nicht ich einen Fehler mache.

    [autoit]


    #include <GuiListView.au3>

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

    Global $ContHandle
    Global $wv

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

    WinActivate("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen")
    WinWaitActive("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen")
    $ContHandle=ControlGetHandle("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen", "TNewCheckListBox1")
    _GUICtrlListView_SetItemChecked($ContHandle, 1, True)
    $wv=_GUICtrlListView_GetItemChecked("$ContHandle", 1)

    [/autoit]


    Weder wird der Haken gesetzt, noch bekomme ich die richtige Aussage, ob die abgehakt sind oder nicht. Ich bekomme immer False.

  • bei CheckListBox Checkstatus auslesen oder setzen

    • Mistil
    • 30. Juli 2013 um 18:51

    Schön, dass dir ein Licht aufgegangen ist :thumbup: . Ich bin leider noch nicht weiter.
    Ich habe jetzt mal folgendes versucht, bin mir aber noch nichtmal sicher, ob ich die Funktion richtig anwende.

    [autoit]

    #include <WinAPI.au3>
    #include <Constants.au3>

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

    Global $ContHandle
    Global $hBox

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

    WinActivate("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen")
    WinWaitActive("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen")
    $ContHandle=ControlGetHandle("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen", "TNewCheckListBox1")
    MsgBox(0, "", $ContHandle)
    $hBox=_WinAPI_GetWindow($ContHandle, $GW_CHILD)
    MsgBox(0, "", $hBox)
    exit

    [/autoit]

    Als Rückgabewert ($hBox) bekomme ich immer 0. Ich steige aber in der Erklärung auch nicht wirklich durch, was ich für $iCmd einsetzen muss (wenn ich Z-Anordnung lese, muss ich immer an Dragonball denken :huh: )
    Ich würde mal wie folgt vermuten und hoffe, dass es richtig ist und mein Fehler woanderst liegt:
    1. $hBox1=_WinAPI_GetWindow($ContHandle, $GW_CHILD)
    2. $hBox2=_WinAPI_GetWindow($hBox1, $GW_HWNDNEXT)
    ...

    Edit hat gemeint, ich soll noch die Includes ergänzen und die Variablen deklarieren. Hatte ich vergessen zu kopieren.

    Edit 31.7:
    Ich habe eben nochmal etwas mit der Funktion gespielt. Also angewandt habe ich sie wohl richtig. Ich bekomme die Handle nur so weit heraus, wie ich es auch mit dem Tool kann. versuche ich das Handle der nächten Child-Ebene zu bekommen, kriege ich 0 zurück.

    mit _GUICtrlListBox_GetCount() bekomme ich immerhin die korrekte Zahl an Childs in dem Kontrol heraus, kann mit _GUICtrlListBox_GetText() den entsprechenden String auslesen und die Boxen mit ControlCommand("", "", "", "SelectString") sogar markieren. Gibt es keine möglichkeit, da an zu setzen und die Boxen zu checken (bzw. das Handle heraus zu bekommen)? Nix gegen die WinAPI-Funktion, aber das scheint nicht zu funktionieren.

  • bei CheckListBox Checkstatus auslesen oder setzen

    • Mistil
    • 28. Juli 2013 um 14:56

    Hm. OK.
    Dachte, der Begriff Checklistbox wäre klar, weil ich das in manchen Fragen schon gelesen habe.

    Das Skript wird euch wohl eher wenig helfen, weil es nur ein wenig rum probieren ist. Das eigentliche Skript steuert die Installation von Programmen, indem es den Installationsdialog automatisiert. Dabei kommt ein Fenster, in dem Checkboxen als ein einziges Control zusammengefasst werden. Es gibt also nur ein Handle für die Liste aus Checkboxes und nicht für jede Checkbox einzeln. Mein Problem ist jetzt, dass ich die Checkboxen gerne Checken oder Unchecken möchte, aber keine Ahnung habe, wie ich den momentanen Checkstatus berücksichtige.
    Controlcommand(..., ..., ..., "Check") geht nicht, weil ich die Checkboxen ja nicht direkt ansprechen kann.

    So weit bin ich bis jetzt:

    [autoit]

    #Include <GuiListBox.au3>
    #include <GuiListView.au3>

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

    Global $x = 1
    Global $y = 1
    Global $ContHandle=0

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

    WinActivate("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen")
    WinWaitActive("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen")
    $ContHandle=ControlGetHandle("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen", "TNewCheckListBox1")
    MsgBox(0, "", $ContHandle)
    $x=_GUICtrlListBox_GetCount($ContHandle)
    MsgBox(0, "", $x)
    $y=_GUICtrlListBox_GetText($ContHandle, 1)
    MsgBox(0, "", $y)
    ControlCommand("Setup - TmNationsForever", "Zusätzliche Aufgaben auswählen", "TNewCheckListBox1", "SelectString", $y)
    exit

    [/autoit]

    Die MsgBoxen sind für mich erstmal nur zur Überprüfung um zu wissen, ob die Variablen die richtigen Werte haben.
    Ab hier weiß ich leider nicht weiter. Wenn ich wenigstens ermitteln könnte, ob die Boxen checked sind oder nicht, könnte ich mich mit Tastensimulationen durchhanglen. Eine elegantere Lösung wäre natürlich noch schöner.
    Und ja, ich weiß, die Variablenbenennung ist nicht besonders elegant, aber die waren ursprünglich für Fensterpositionen deklariert und ich habe sie zum testen missbraucht.

    Im Anhang mal ein Screenshot vom Installationsfenster (Der schwarze Kasten ist zu sehen, weil ich gerade die AutoIt Window-Info benutzt habe. Es ist zusehen, dass die Checkboxen als 1 Control bbehandelt werden)
    Daneben könnt ihr sehen, was das Info-Tool über das Control zu sagen hat.

    Dateien

    TMNations.jpg 153,64 kB – 0 Downloads
  • bei CheckListBox Checkstatus auslesen oder setzen

    • Mistil
    • 28. Juli 2013 um 11:40

    Kann mir hier denn keiner weiter Helfen?

    Es wäre schade, wenn die Überarbeitung des Programms daran scheitern würde.

  • bei CheckListBox Checkstatus auslesen oder setzen

    • Mistil
    • 23. Juli 2013 um 19:49

    Hi.

    Ich bin mit meiner automatischen PC-Einrichtung jetzt fast fertig. Nun möchte ich den Code nochmal durch gehen und das mittlerweile gelernte auch bei dem älteren Code anwenden. Immerhin bestand der Anfangscode fast ausschließlich aus Tastensimulationen.
    Ein großes anliegen ist mir dabei die Optimierung des Umgangs mit CheckListboxes. Bisher habe ich die List mit Tastenbefehlen abgearbeitet, was natürlich recht Fehleranfällig ist.
    Als "Problem" habe ich mir jetzt die Installation von Trackmania Nations Forever ausgesucht. Ich bräuchte irgendeine Möglichkeit,
    Checkboxen in der Checklistbox mit Sicherheit Ab- oder Anzuwählen (also nicht nur von Checked auf Unchecked oder zurück wechseln, sondern dass eben auch nix passiert, wenn die Box schon z.B. unchecked ist)
    Mir ist dabei egal, ob es schon eine fertige Funbktion wie bei ControlCommand mit check gibt, oder ob ich den Check-Status prüfe und bei bedarf den Checkstatus ändere.
    Ich habe jetzt seit gestern Abend gegoogelt aber leider nichts gefunden, dass mir weiter geholfen hat. Es wurde mehrmals auf
    - die Commands SetCurrentSelection, IsChecked und SelectString von ControlCommand
    - _GUICtrlListBox_GetCount
    - _GUICtrlListBox_GetSel
    verwiesen, aber mir haben die leider nicht weiter geholfen. Ich bekomme immer nur zurück, ob der entsprechende String markiert ist oder nicht.

    Es wäre schön, wenn ihr mir hier weiter helfen könnt.

  • DNS mit netsh und Autoit setzen

    • Mistil
    • 2. April 2012 um 22:14

    Danke dir, aber ich hab wohl vergessen zu erwähnen, dass ich mit Win 7 64 Bit fahre.

    Gibt es evtl. auch andere Möglichkeiten, um den PC vom Netz zu ternnen, bei denen man den Namen nicht braucht?

  • DNS mit netsh und Autoit setzen

    • Mistil
    • 29. März 2012 um 21:35

    Hi,

    ich grabe das Thema mal aus, weil ich dazu noch eine Frage habe und hoffe, dass ich diesmal eine Antwort bekomme :D

    Wie bekomme ich den Name der Netzwerkverbindung in einer Variablen gespeichert? Weder die SuFu, noch Google konnten mir bis jertzt weiter helfen. Ziel ist es, die Netzwerkverbindung meines PC´s zu Beginn des Scriptes zu deaktivieren, und nur wenn nötig kurz wieder zu aktiviern.

    mfg Michl

  • Ordnericons ändern mit "FolderSetIcon"

    • Mistil
    • 16. Februar 2012 um 23:06

    Hi,

    ich wollte nach langem mal an meiner CD für meine individuelle Windowseinrichtung weiter machen und suche nach einer Möglichkeit die Icons von Ordnern auf meinem Desktop zu ändern. Dabei bin ich auf die UDF von Schnuffel gestoßen

    Ordner Icon ändern

    Leider scheint das aber bei mir nicht zu funktionieren. Nach ausführen des Test-Codes gibt es zwar den Testordner, leider hat dieser aber noch sein originales Icon, und der Name ist der Iconpfad,0

    [autoit]

    #include <_FolderSetIcon.au3>

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

    DirCreate(@DesktopDir & "\test")
    _FolderSetIcon(@DesktopDir & "\test", "c:\Windows\Icons\c.ico", 0)

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

    Exit

    [/autoit]

    Hab ich irgend einen Fehler in den Code eingebaut, oder habt Ihr ne Idee was ich noch machen könnte? Danke schonmal
    Im Anhang noch ein Screenshot vom Ergebnis.

    Edit: Mir ist eben ne Idee gekommen. Könnte das Problem darin liegen, dass ich zwar Win 7 64bit installiert habe, aber die klassische Ansicht verwende? Dann sind ja auch die Menüs etwas anderst.

    Dateien

    Ordner.jpg 250,03 kB – 0 Downloads
  • installation von Net Framework automatisieren

    • Mistil
    • 5. Januar 2011 um 18:42

    :whistling: Ups.

    Sorry. Das nächste mal schaue ich mir erst die Hilfe an. In allen anderen Progerammen hilft die nur net wirklich weiter, bin das quasi net gewohnt.

    @Ishikawa:
    Danke. Werd ich bei Gelegenheit mal testen. Is das sowas wie eine Systemwiederherstellung?

  • installation von Net Framework automatisieren

    • Mistil
    • 5. Januar 2011 um 16:49

    So. Das Problem mit dem Infofenster bei Version 3.0 habe ich jetzt mit einem Mausklick auf die Position der "Sprechblase" gelöst.
    Jetzt läuft es soweit gut.

    Habt ihr vielleicht einen Tipp für mich wegen der Installations-Simulation? Hab ja noch ein paar Programme vor mir ;)

    Mal noch ne andere Frage. Die automatisierte Installation soll aus einem von mir geschriebenem C-Programm gestartet werden. Kann ich mit AutoIt einen Returnwert an mein Hauptprogramm liefern?

    Edit: Ist zum Ausführen eines compilierten Scriptes (xyz.exe) eigentlich auch die AutoIt-Software nötig?

  • installation von Net Framework automatisieren

    • Mistil
    • 4. Januar 2011 um 23:42

    Hey. Euch natürlich auch ein schönes neues Jahr.
    Danke schonmal für die netten Antworten. Das Tutorial habe ich schon durchgearbeitet, und ich habe die Installation von Net Framework 1.1-4.0 inkl ServicePacks auch schon soweit automatisiert. Nur die Installation der Version 3.0 macht mir wie gesagt ein paar Probleme. Aber ich werde morgen mal deine Tipps mit WinActicate und WinWaitActive testen.

  • installation von Net Framework automatisieren

    • Mistil
    • 4. Januar 2011 um 22:47

    Hey. Ich bin neu hier.
    Ich bin dabei ein Programm zu schreiben, dass mir nach einer neuinstallation von Windows meine ganzen kleinen Programmen wieder installiert. Ein Bekannter meinte, ich soll es mal mit AutoIt versuchen. Es klappt auch soweit siper, bis auf ein paar kleine Dinge ;)
    Im Moment kämpfe ich mit MS Net Framework 3.0. Wenn ich das installiere, verschwindet das Installationsfenster nach dem akzeptieren der Lizenzvereinbarung im Infobereich der Taskleiste und installiert alles fertig. Um die Installation zu beenden, muss ich aber am Ende auf Beenden klicken, aber ich habe keine ahnung, wie ich das Fenster wieder aus dem Infobereich öffnen kann (also mit AutoIt, manuell kann ich das schon, is ja aber net Sinn der Sache)

    Und noch ne andere Frage. Gibt es eine möglichkeit, die Installationen wärend des programmierens zu simulieren? Es nervt echt total, wenn ich die Programme immer installieren und für jeden Versuch wieder deinstallieren muss. Zum programmieren geht das ja noch, aber wenn dann ein Bug im Code ist (zum Beispiel kommt ein Tastendruck nicht an) ist es nervig.

    Danke schonmal für die Antworten :D

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™