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

Beiträge von unearth

  • Mit AutoIt kompletten RSS-Feed auslesen

    • unearth
    • 18. April 2012 um 14:03

    Ja, ich hatte es befürchtet. Es war ein Denkfehler meinerseits, da ich im GoogleReader die komplette Historie des Feeds durchsuchen kann - nur nicht so, wie ich es brauche. Aber Google wird die alle gecached haben.

  • Mit AutoIt kompletten RSS-Feed auslesen

    • unearth
    • 18. April 2012 um 12:54

    Hi,

    ich habe mir dieses Skript herangezogen, um einen RSS-Feed auszulesen. So weit, so gut. Es tut alles, was es soll. Leider spuckt es nur die aktuellsten 30 Items aus den meisten Feeds (Beispiel ) aus. Es hat wohl mit den Quelldaten zu tun, die erst einmal nur 30 Items angeben. Aber hat jemand eine Ahnung, wie ich mehr anfordere?

    Ich möchte die Items für einen längeren Zeitraum auswerten und vergleichen, 25 helfen mir nicht. Kann mich jemand in die richtige Richtung schubsen, wie ich mehr Items anfordere?

    Vielen Dank schon einmal.

  • FireFox

    • unearth
    • 12. Dezember 2007 um 17:05

    Sorry, aber dann bin ich ratlos, zumindest eine Fehlermeldung sah für mich so aus, als wäre es das.

  • UDF für .ini-Dateien (Sortieren, suchen, tauschen)

    • unearth
    • 12. Dezember 2007 um 15:54

    Hi!

    Ich habe für ein Projekt mal eine ziemlich komplizierte Funktion für .ini-Dateien geschrieben, bevor ich drauf kam, die aufzudröseln. Das habe ich jetzt gemacht und dachte, andere könnten das auch gebrauchen. Falls nicht schon jemand eine bessere Variante geschrieben hat, könnt ihr sie (Einige könnten überflüssig oder komplizierter sein) gerne unter Verweis auf mich -Quellcode reicht - benutzen. Hier die Beschreibung der wichtigsten Funktionen:

    _IniFindKey(): Sucht übereinstimmenden Key in der ini-Datei und gibt die zugehörigen Daten in einem Array zurück.
    _IniFindValue(): Sucht übereinstimmenden Value in der ini-Datei und gibt die zugehörigen Daten in einem Array zurück.
    _IniInsertSection(): Fügt eine Section an der angegebenen Stelle ein.
    _IniInsertKey(): Fügt einen Key und Value an der angegebenen Stelle in der Section ein.
    _IniSortAll(): Sortiert alle Einträge in der ini-Datei.
    _IniSortSections(): Sortiert alle Sections in der ini-Datei.
    _IniSortSectionKeys(): Sortiert alle Keys einer Section.
    _IniKeySectionSwap(): Verschiebt einen Key zwischen Sections.

    Hier die UDF:

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Function Name:_IniExists($sFile)
    ; Description: Prüft, ob eine ini-Datei besteht
    ; Parameter(s): $sFile ist der Pfad zur ini-Datei.
    ; Return Value(s): Erfolg - Gibt 1 zurück.
    ; Fehler - Gibt 0 zurück.
    ; Author(s): unearth
    ;
    ;===============================================================================
    Func _IniExists($sFile)
    If Not FileExists($sFile) Or StringRight($sFile, 4) <> ".ini" Then
    Return 0
    Else
    Return 1
    EndIf
    EndFunc

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

    ;===============================================================================
    ;
    ; Function Name:_IniSectionExists($sFile, $sIniSection)
    ; Description: Prüft, ob eine bestimmte Section in der ini-Datei besteht
    ; Parameter(s): $sFile ist der Pfad zur ini-Datei.
    ;$sIniSection ist die gesuchte Section.
    ; Return Value(s): Erfolg - Gibt 1 zurück.
    ; Fehler - Gibt 0 zurück.
    ; Author(s): unearth
    ;
    ;===============================================================================
    Func _IniSectionExists($sFile, $sIniSection)
    IniReadSection($sFile, $sIniSection)
    If @error Then Return 0
    Return 1
    EndFunc

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

    ;===============================================================================
    ;
    ; Function Name:_IniKeyExists($sFile, $sIniSection, $sIniKey)
    ; Description: Prüft, ob ein bestimmter Key in der ini-Datei besteht
    ; Parameter(s): $sFile ist der Pfad zur ini-Datei.
    ;$sIniSection ist die Section des gesuchten Keys.
    ;$sIniKey ist der gesuchte Key.
    ; Return Value(s): Erfolg - Gibt 1 zurück.
    ; Fehler - Gibt 0 zurück.
    ; Author(s): unearth
    ;
    ;===============================================================================
    Func _IniKeyExists($sFile, $sIniSection, $sIniKey)
    $var = IniRead($sFile, $sIniSection, $sIniKey, "error")
    If $var = "error" Then Return 0
    Return 1
    EndFunc

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

    ;===============================================================================
    ;
    ; Function Name:_IniValueExists($sFile, $sIniSection, $sIniKey, $sIniValue)
    ; Description: Prüft, ob ein bestimmter Value in der ini-Datei besteht
    ; Parameter(s): $sFile ist der Pfad zur ini-Datei.
    ;$sIniSection ist die Section des gesuchten Keys.
    ;$sIniKey ist der Key des gesuchten Values.
    ;$sIniValue ist der gesuchte Value.
    ; Return Value(s): Erfolg - Gibt 1 zurück.
    ; Fehler - Gibt 0 zurück.
    ; Author(s): unearth
    ;
    ;===============================================================================
    Func _IniValueExists($sFile, $sIniSection, $sIniKey, $sIniValue)
    $var = IniRead($sFile, $sIniSection, $sIniKey, "error")
    If $var = $sIniValue Then Return 1
    Return 0
    EndFunc

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

    ;===============================================================================
    ;
    ; Function Name:_IniFindKey($sFile, $sIniKey, [$fStrInStr])
    ; Description: Sucht übereinstimmenden Key in der ini-Datei und gibt die
    ;zugehörigen Daten in einem Array zurück.
    ; Parameter(s): $sFile ist der Pfad zur ini-Datei.
    ;$sIniKey ist der gesuchte Key.
    ;$fStrInStr gibt an, ob
    ;0 = $sIniKey ist der vollständige gesuchte Key (Default)
    ;1 = $sIniKey ist eine Teilzeichenkette des gesuchten Keys
    ; Return Value(s): Erfolg - Gibt ein Array zurück, das die Sections und Values aller
    ;übereinstimmenden Daten enthält.
    ; Fehler - Gibt 0 zurück.
    ; Author(s): unearth
    ; Remarks:
    ; $Array[0][0] enthält die Anzahl der gefundenen Keys. $Array[1][0] enthält die Section
    ; des ersten gefundenen Keys, $Array[1][1] enthält den Value des ersten gefundenen Keys.
    ; $Array[n][0] und $Array[n][1] enthalten die entsprechenden Daten der folgenden gefundenen
    ; Keys.
    ; Ist $fStrInStr gleich 1, enthält $Array[1][2] den vollständigen Name des gefundenen Keys,
    ; $Array[n][2] die entsprechenden vollständigen Namen der weiteren gefundenen Keys.
    ;
    ;===============================================================================
    Func _IniFindKey($sFile, $sIniKey, $fStrInStr=0)
    Dim $aArray[1][1]
    $aArray[0][0] = 0

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

    Local $aSections = IniReadSectionNames($sFile)
    If @error Then Return 0 ;Keine Datei gefunden
    For $i_sec = 1 To $aSections[0] ;Schleife der Sections
    Local $aKeys = IniReadSection($sFile, $aSections[$i_sec])
    For $i_key = 1 To $aKeys[0][0] ;Schleife der Keys
    If $fStrInStr = 0 And $aKeys[$i_key][0] = $sIniKey Then ;Nicht case-sensitive
    $aArray[0][0] += 1 ;Setzt den Counter für das Array
    ReDim $aArray[$aArray[0][0]+1][2]
    $aArray[$aArray[0][0]][0] = $aSections[$i_sec] ;Setzt den Counter für die Section
    $aArray[$aArray[0][0]][1] = $aKeys[$i_key][1] ;Setzt den Counter für den Value
    ElseIf $fStrInStr = 1 And StringInStr($aKeys[$i_key][0], $sIniKey) Then ;Nicht case-sensitive
    $aArray[0][0] += 1 ;Setzt den Counter für das Array
    ReDim $aArray[$aArray[0][0]+1][3] ;TODO: Ist das +2 wirklich richtig?
    $aArray[$aArray[0][0]][0] = $aSections[$i_sec] ;Setzt den Counter für die Section
    $aArray[$aArray[0][0]][1] = $aKeys[$i_key][1] ;Setzt den Counter für den Value
    $aArray[$aArray[0][0]][2] = $aKeys[$i_key][0] ;Setzt den Wert für den kompletten Key
    EndIf
    Next
    Next
    If $aArray[0][0] = 0 Then Return 0
    If $aArray[0][0] > 0 Then Return $aArray
    EndFunc

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

    ;===============================================================================
    ;
    ; Function Name: _IniFindValue($sFile, $sIniValue, [$fStrInStr])
    ; Description: Sucht übereinstimmenden Value in der ini-Datei und gibt die
    ;zugehörigen Daten in einem Array zurück.
    ; Parameter(s): $sFile ist der Pfad zur ini-Datei.
    ;$sIniValue ist der gesuchte Value.
    ;$fStrInStr gibt an, ob
    ;0 = $sIniKey ist der vollständige gesuchte Key (Default)
    ;1 = $sIniKey ist eine Teilzeichenkette des gesuchten Keys
    ; Return Value(s): Erfolg - Gibt ein Array zurück, das die Sections und Keys aller
    ;übereinstimmenden Daten enthält.
    ; Fehler - Gibt 0 zurück.
    ; Author(s): unearth
    ; Remarks:
    ; $Array[0][0] enthält die Anzahl der gefundenen Values. $Array[1][0] enthält die Section
    ; des ersten gefundenen Values, $Array[1][1] enthält den Key des ersten gefundenen Values.
    ; $Array[n][0] und $Array[n][1] enthalten die entsprechenden Daten der folgenden gefundenen
    ; Values.
    ; Ist $fStrInStr gleich 1, enthält $Array[1][2] den vollständigen Name des gefundenen Values,
    ; $Array[n][2] die entsprechenden vollständigen Namen der weiteren gefundenen Values.
    ;
    ;===============================================================================
    Func _IniFindValue($sFile, $sIniValue, $fStrInStr=0)
    Dim $aArray[1][1]
    $aArray[0][0] = 0

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

    Local $aSections = IniReadSectionNames($sFile)
    If @error Then Return 0 ;Keine Datei gefunden
    For $i_sec = 1 To $aSections[0] ;Schleife der Sections
    Local $aKeys = IniReadSection($sFile, $aSections[$i_sec])
    For $i_key = 1 To $aKeys[0][0] ;Schleife der Keys
    If $fStrInStr = 0 And $aKeys[$i_key][1] = $sIniValue Then ;Nicht case-sensitive
    $aArray[0][0] += 1 ;Setzt den Counter für das Array
    ReDim $aArray[$aArray[0][0]+1][2]
    $aArray[$aArray[0][0]][0] = $aSections[$i_sec] ;Setzt den Wert für die Section
    $aArray[$aArray[0][0]][1] = $aKeys[$i_key][0] ;Setzt den Wert für den Key
    ElseIf $fStrInStr = 1 And StringInStr($aKeys[$i_key][1], $sIniValue) Then ;Nicht case-sensitive
    $aArray[0][0] += 1 ;Setzt den Counter für das Array
    ReDim $aArray[$aArray[0][0]+1][3] ;TODO: Ist das +2 wirklich richtig?
    $aArray[$aArray[0][0]][0] = $aSections[$i_sec] ;Setzt den Wert für die Section
    $aArray[$aArray[0][0]][1] = $aKeys[$i_key][0] ;Setzt den Wert für den Key
    $aArray[$aArray[0][0]][2] = $aKeys[$i_key][1] ;Setzt den Wert für den kompletten Value
    EndIf
    Next
    Next
    If $aArray[0][0] = 0 Then Return 0
    If $aArray[0][0] > 0 Then Return $aArray
    EndFunc

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

    ;===============================================================================
    ;
    ; Function Name: _IniInsertSection($sFile, $sIniSection, $sData, $nIndex)
    ; Description: Sucht übereinstimmenden Value in der ini-Datei und gibt die
    ;zugehörigen Daten in einem Array zurück.
    ; Parameter(s): $sFile ist der Pfad zur ini-Datei.
    ;$sIniSection ist die einzufügende Section
    ;$sIniData ist der Datenbestand der einzufügenden Section.
    ;$sIniIndex die Position innerhalb der ini-Datei, an der die
    ;Section eingefügt werden soll (Index beginnt bei 1).
    ; Return Value(s): Erfolg - Gibt 1 zurück.
    ; Fehler - Gibt 0 zurück und setzt @error.
    ;@error=1 Ini-Datei nicht vorhanden
    ;@error=2 Section existiert bereits
    ;@error=3 Falscher Index
    ; Author(s): unearth
    ; Remarks:
    ; Sollen mit $sData mehr als ein Key eingegeben werden, müssen die Keys mit
    ; @LF getrennt werden
    ;
    ;===============================================================================
    Func _IniInsertSection($sFile, $sIniSection, $sData, $nIndex)
    Local $aSections = IniReadSectionNames($sFile)
    If @error Then Return 0
    If Not _IniExists($sFile) Then
    SetError(1) ;@error=1 Ini-Datei nicht vorhanden
    Return 0
    EndIf
    If _IniSectionExists($sFile, $sIniSection) Then
    SetError(2) ;@error=2 Section existiert bereits
    Return 0
    EndIf
    If $nIndex < 0 Or $nIndex > $aSections[0] Then
    SetError(3) ;@error=3 Falscher Index
    Return 0
    EndIf

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

    IniWriteSection($sFile, $sIniSection, $sData) ;Hängt die neue Section zunächst hinten an
    For $i = $nIndex To $aSections[0] ;Löscht die Sections, die später unter der eingefügten Section liegen sollen. Hängt sie dann der Reihe nach wieder an.
    Local $aKeys = IniReadSection($sFile, $aSections[$i])
    IniDelete($sFile, $aSections[$i])
    For $i_key = 1 To $aKeys[0][0]
    IniWrite($sFile, $aSections[$i], $aKeys[$i_key][0],$aKeys[$i_key][1])
    Next
    Next
    Return 1
    EndFunc

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

    ;===============================================================================
    ;
    ; Function Name: _IniInsertKey($sFile, $sIniSection, $sIniKey, $sIniValue, $nIndex)
    ; Description: Sucht übereinstimmenden Value in der ini-Datei und gibt die
    ;zugehörigen Daten in einem Array zurück.
    ; Parameter(s): $sFile ist der Pfad zur ini-Datei.
    ;$sIniSection ist die einzufügende Section
    ;$sIniKey ist der einzufügende Key.
    ;$sIniValue ist der Value des einzufügenden Keys.
    ;$sIniIndex die Position innerhalb der ini-Datei, an der der
    ;Key eingefügt werden soll (Index beginnt bei 1).
    ; Return Value(s): Erfolg - Gibt 1 zurück.
    ; Fehler - Gibt 0 zurück und setzt @error.
    ;@error=1 Ini-Datei nicht vorhanden
    ;@error=2 Section existiert bereits
    ;@error=3 Key existiert bereits
    ;@error=4 Falscher Index
    ; Author(s): unearth
    ;
    ;===============================================================================
    Func _IniInsertKey($sFile, $sIniSection, $sIniKey, $sIniValue, $nIndex)
    Local $aArrayVec1
    Local $aArrayVec2

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

    $aKeys = IniReadSection($sFile, $sIniSection)
    If @error Then Return 0
    If Not _IniExists($sFile) Then
    SetError(1) ;@error=1 Ini-Datei nicht vorhanden
    Return 0
    EndIf
    If Not _IniSectionExists($sFile, $sIniSection) Then
    SetError(2) ;@error=2 Section nicht vorhanden
    Return 0
    EndIf
    If _IniKeyExists($sFile, $sIniSection, $sIniKey) Then
    SetError(3) ;@error=3 Key existiert bereits
    Return 0
    EndIf
    If $nIndex < 0 Or $nIndex > $aKeys[0][0] Then
    SetError(4) ;@error=4 Falscher Index
    Return 0
    EndIf

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

    For $i = 1 To $aKeys[0][0] ;Löscht die bisherigen Werte in der Section
    IniDelete($sFile, $sIniSection, $aKeys[$i][0])
    Next
    Dim $aArrayVec1[$aKeys[0][0]+1] ;Den ersten Vektor von §aKeys als eigenständiges Array erstellen = Enthält die Keys
    $aArrayVec1[0] = $aKeys[0][0]+1
    For $i = 1 To $aKeys[0][0]
    $aArrayVec1[$i] = $aKeys[$i][0]
    Next
    Dim $aArrayVec2[$aKeys[0][0]+1] ;Den zweiten Vektor von §aKeys als eigenständiges Array erstellen = Enthält die Values
    $aArrayVec2[0] = $aKeys[0][0]+1
    For $i = 1 To $aKeys[0][0]
    $aArrayVec2[$i] = $aKeys[$i][1]
    Next
    _ArrayInsert($aArrayVec1, $nIndex, $sIniKey)
    _ArrayInsert($aArrayVec2, $nIndex, $sIniValue)
    $aKeys = "" ;Hebt das ursprüngliche Array auf, um es neu erstellen zu können
    Dim $aKeys[$aArrayVec1[0]+1][$aArrayVec2[0]+1] ;Erstellt das Array mit dem eingefügten Key und dessen Value neu
    $aKeys[0][0] = $aArrayVec1[0]
    For $i = 1 To $aKeys[0][0]
    $aKeys[$i][0] = $aArrayVec1[$i]
    $aKeys[$i][1] = $aArrayVec2[$i]
    Next
    For $i = 1 To $aKeys[0][0] ;Schreibt die neuen Daten in die Section
    IniWrite($sFile, $sIniSection, $aKeys[$i][0], $aKeys[$i][1])
    Next
    Return 1
    EndFunc

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

    ;===============================================================================
    ;
    ; Function Name: _IniSortAll($sFile, $fDescendingSections, $fDescendingKeys)
    ; Description: Sortiert alle Einträge in der ini-Datei.
    ; Parameter(s): $sFile ist der Pfad zur ini-Datei.
    ;$fDescendingSections gibt an, ob
    ;0 = Sections werden aufsteigend sortiert(Default)
    ;1 = Sections werden absteigend sortiert
    ;$fDescendingKeys gibt an, ob
    ;0 = Keys werden aufsteigend sortiert(Default)
    ;1 = Keys werden absteigend sortiert
    ; Return Value(s): Erfolg - Gibt 1 zurück.
    ; Fehler - Gibt 0 zurück.
    ; Author(s): unearth
    ;
    ;===============================================================================
    Func _IniSortAll($sFile, $fDescendingSections=0, $fDescendingKeys=0)
    ;Ist die Integrität gestört, werden Daten eventuell gelöscht
    If _IniSortSections($sFile, $fDescendingSections) = 0 Then Return 0

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

    Local $aSections = IniReadSectionNames($sFile)
    For $i_sec = 1 To $aSections[0]
    If _IniSortSectionKeys($sFile, $aSections[$i_sec], $fDescendingKeys) = 0 Then Return 0
    Next
    Return 1
    EndFunc

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

    ;===============================================================================
    ;
    ; Function Name: _IniSortSections($sFile, $fDescending)
    ; Description: Sortiert alle Sections in der ini-Datei.
    ; Parameter(s): $sFile ist der Pfad zur ini-Datei.
    ;$fDescending gibt an, ob
    ;0 = Sections werden aufsteigend sortiert(Default)
    ;1 = Sections werden absteigend sortiert
    ; Return Value(s): Erfolg - Gibt 1 zurück.
    ; Fehler - Gibt 0 zurück.
    ; Author(s): unearth
    ;
    ;===============================================================================
    Func _IniSortSections($sFile, $fDescending=0)
    ;Ist die Integrität der INI gestört, werden Daten eventuell gelöscht
    If $fDescending > 1 Then $fDescending = 1
    If $fDescending < 1 Then $fDescending = 0

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

    Local $aSections = IniReadSectionNames($sFile)
    If @error Then Return 0
    _ArraySort($aSections, $fDescending, 1) ;Sortiert die Sections
    For $i_sec = 1 To $aSections[0] ;Schreibt die Sections um
    $aKeys = IniReadSection($sFile, $aSections[$i_sec])
    IniDelete($sFile, $aSections[$i_sec]) ;Alte Position löschen
    For $i_key = 1 To $aKeys[0][0]
    IniWrite($sFile, $aSections[$i_sec], $aKeys[$i_key][0],$aKeys[$i_key][1]) ;Neue Position schreiben
    Next
    Next
    Return 1
    EndFunc

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

    ;===============================================================================
    ;
    ; Function Name: _IniSortSectionKeys($sFile, $sIniSection, $fDescending)
    ; Description: Sortiert alle Keys einer Section.
    ; Parameter(s): $sFile ist der Pfad zur ini-Datei.
    ;$sIniSection gibt an, in welcher Section die Keys sortiert werden.
    ;$fDescending gibt an, ob
    ;0 = Keys werden aufsteigend sortiert(Default)
    ;1 = Keys werden absteigend sortiert
    ; Return Value(s): Erfolg - Gibt 1 zurück.
    ; Fehler - Gibt 0 zurück.
    ; Author(s): unearth
    ;
    ;===============================================================================
    Func _IniSortSectionKeys($sFile, $sIniSection, $fDescending=0)
    ;Ist die Integrität der INI gestört, werden Daten eventuell gelöscht
    Local $aKeys

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

    If $fDescending > 1 Then $fDescending = 1
    If $fDescending < 1 Then $fDescending = 0

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

    $aKeys = IniReadSection($sFile, $sIniSection)
    If @error Then Return 0
    For $i_key = 1 To $aKeys[0][0]
    IniDelete($sFile, $sIniSection, $aKeys[$i_key][0])
    Next
    _ArraySort($aKeys, $fDescending, 1, 0, 2) ;Sortieren
    For $i_key = 1 To $aKeys[0][0]
    IniWrite($sFile, $sIniSection, $aKeys[$i_key][0], $aKeys[$i_key][1])
    Next
    Return 1
    EndFunc

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

    ;===============================================================================
    ;
    ; Function Name: _IniKeySectionSwap($sFile, $sIniKey, $sIniSection1, $sIniSection2)
    ; Description: Verschiebt einen Key zwischen Sections.
    ; Parameter(s): $sFile ist der Pfad zur ini-Datei.
    ;$sIniKey gibt den zu verschiebenden Key an.
    ;$sIniSection1 gibt die aktuelle Section des Keys an.
    ;$sIniSection2 gibt die zukünftige Section des Keys an.
    ; Return Value(s): Erfolg - Gibt 1 zurück.
    ; Fehler - Gibt 0 zurück.
    ; Author(s): unearth
    ;
    ;===============================================================================
    Func _IniKeySectionSwap($sFile, $sIniKey, $sIniSection1, $sIniSection2)
    ;TODO = Später noch um _IniKeyInsert-Funktion mit Indexierung ergänzen?
    If Not _IniExists($sFile) Or Not _IniKeyExists($sFile, $sIniSection1, $sIniKey) Or Not _IniSectionExists($sFile, $sIniSection2) Then Return 0 ;Prüft, ob die Voraussetzungen bestehen

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

    $sIniValue = IniRead($sFile, $sIniSection1, $sIniKey, "error")
    If @error Then Return 0
    IniDelete($sFile, $sIniSection1, $sIniKey)
    IniWrite($sFile, $sIniSection2, $sIniKey, $sIniValue) ;siehe TODO
    Return 1
    EndFunc

    [/autoit]

    Im Anhang eine Zip mit ini-Datei zum Testen. Falls Fehler drin sind - Feedback willkommen.

    Grüße unearth

  • FireFox

    • unearth
    • 12. Dezember 2007 um 15:34

    Aha! Du brauchst die Erweiterung "MozLab". Wo die ist, sollte im FF.au3-Thread beschrieben sein. Ohne die im FF installiert zu haben, geht es nicht. Schau mal kurz nach, daran könnte es aber schon liegen. ;)

  • FireFox

    • unearth
    • 12. Dezember 2007 um 15:30

    Nur eine kurze Frage? Hast Du die nötige Erweiterung für den FF installiert, ohne die es ohnehin nicht klappt?

  • Problem bei ListView mit neuer Version von AutoIt

    • unearth
    • 12. Dezember 2007 um 15:11

    Hi!

    Ich habe ein "altes" Skript von mir mal eben mit der neuen Version getestet und musste natürlich einiges umstellen, aber mit dem bloßen Umbenennen der Funktionen war´s nicht getan.

    Hier mein altes Skript:

    Spoiler anzeigen

    #Include <Constants.au3>
    #include <GUIConstants.au3>
    #include <file.au3>
    #Include <Misc.au3>
    #include <Array.au3>
    #include <GuiListView.au3>

    Dim $aAdmins[1] ;Array der auszulesenden Administrator-Profile
    Dim $programmmax
    Dim $profil_array
    Dim $edit
    Dim $aboutitem
    Dim $exititem
    Dim $item1
    Dim $item2
    Dim $item3
    Dim $optiondropbox
    Dim $optionmenu
    Dim $optiontraytip
    Dim $optionautostart
    Dim $optionpasswd
    Dim $optionpathcheck
    Dim $traytipflag
    Dim $passwdsaveflag = 0
    Dim $passwd
    Dim $exitflag = 0
    Dim $helpitem
    Dim $flagoptionsstartup

    _EditIni()

    ;----------------------------------------------------------------------
    ;FUNKTION _EditIni
    ;Erstellt eine GUI zum Bearbeiten der data.ini
    ;----------------------------------------------------------------------
    Func _EditIni()

    $nLVSBtnState = 0 ;Wird zum Aktivieren der Buttons benötigt

    TraySetState(2)

    ;GUI für die EditControl wird erzeugt, hierin findet die Bearbeitung der Ini-Datei statt
    $editinigui = GUICreate("AdminRun", 800, 335)

    GUICtrlCreateGraphic(0, 0, 800, 60)
    GUICtrlSetBkColor(-1, 0xffffff)
    GUICtrlCreatePic(@ScriptDir & "\img\addon.bmp", 15, 20, 16, 16)

    $label1 = GUICtrlCreateLabel("Menüeinträge bearbeiten", 45, 15, 300)
    GUICtrlSetBkColor($label1, 0xffffff)
    GUICtrlSetFont($label1, 9, 600)

    $label2 = GUICtrlCreateLabel("Fügen Sie neue Einträge hinzu oder löschen Sie Einträge", 45, 30, 300)
    GUICtrlSetBkColor($label2, 0xffffff)
    GUICtrlSetFont($label2, 8, 400, 2)

    $statuslabel1 = GUICtrlCreateLabel("", 0, 61, 801, 2, BitOR($SS_SIMPLE, $SS_SUNKEN))

    $EDITINI_LISTVIEW = GUICtrlCreateListView("Programmname|Programmpfad|Status", 0, 62, 800, 229, $LVS_SHOWSELALWAYS, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT,$LVS_EX_HEADERDRAGDROP))
    _GUICtrlListViewSetColumnWidth($EDITINI_LISTVIEW, 0, 200);SPALTENBREITE "Profilname" FESTLEGEN
    _GUICtrlListViewSetColumnWidth($EDITINI_LISTVIEW, 1, 520);SPALTENBREITE "Profilpfad" FESTLEGEN
    _GUICtrlListViewSetColumnWidth($EDITINI_LISTVIEW, 2, 59);SPALTENBREITE "Status" FESTLEGEN

    $EDITINI_AddBtn = GUICtrlCreateButton("Hinzufügen", 10, 300, 80)
    $EDITINI_EditBtn = GUICtrlCreateButton("Bearbeiten", 95, 300, 80)
    $EDITINI_DelBtn = GUICtrlCreateButton("Löschen", 180, 300, 80)
    $EDITINI_MoveUpBtn = GUICtrlCreateButton("Hoch", 265, 300, 80)
    $EDITINI_MoveDownBtn = GUICtrlCreateButton("Runter", 350, 300, 80)
    $EDITINI_CheckBtn = GUICtrlCreateButton("Testen", 435, 300, 80)

    $EDITINI_SaveBtn = GUICtrlCreateButton("Speichern", 585, 300, 100)
    GUICtrlSetState($EDITINI_SaveBtn, $GUI_DISABLE)
    $EDITINI_ExitBtn = GUICtrlCreateButton("Fertig", 690, 300, 100)

    GUISetState()

    Dim $B_DESCENDING[_GUICtrlListViewGetSubItemsCount($EDITINI_LISTVIEW)] ;Setzt die nötigen Voraussetzungen für das Sortieren

    ;~ ;Auslesen der Ini-Datei in Array
    $aDataIniContent = IniReadSectionNames(@ScriptDir & "\data.ini")
    For $i = 1 To $aDataIniContent[0]
    GUICtrlCreateListViewItem($aDataIniContent[$i] & "|" & IniRead(@ScriptDir & "\data.ini", $aDataIniContent[$i], "path", "Fehler") ,$EDITINI_LISTVIEW) ;Eventuell sollte ich doch Variable zuordnen
    Next

    While 1
    $msg1 = GUIGetMsg()
    $nLVSCountLines = _GUICtrlListViewGetSelectedCount($EDITINI_LISTVIEW) ;Wird zum Aktivieren der Buttons benötigt
    Select
    Case $msg1 = 0
    ContinueLoop
    ;Schalter für Buttons, wenn kein Item gewählt
    Case $nLVSBtnState <> 1 And $nLVSCountLines = 0
    GUICtrlSetState($EDITINI_EditBtn, $GUI_DISABLE)
    GUICtrlSetState($EDITINI_DelBtn, $GUI_DISABLE)
    GUICtrlSetState($EDITINI_MoveUpBtn, $GUI_DISABLE)
    GUICtrlSetState($EDITINI_MoveDownBtn, $GUI_DISABLE)
    $nLVSBtnState = 1
    ;Schalter für Buttons, wenn ein Item gewählt
    Case $nLVSBtnState <> 2 And $nLVSCountLines = 1
    GUICtrlSetState($EDITINI_EditBtn, $GUI_ENABLE)
    GUICtrlSetState($EDITINI_DelBtn, $GUI_ENABLE)
    GUICtrlSetState($EDITINI_MoveUpBtn, $GUI_ENABLE)
    GUICtrlSetState($EDITINI_MoveDownBtn, $GUI_ENABLE)
    $nLVSBtnState = 2
    ;Schalter für Buttons, wenn mehr als ein Item gewählt
    Case $nLVSBtnState <> 3 And $nLVSCountLines > 1
    GUICtrlSetState($EDITINI_EditBtn, $GUI_DISABLE)
    GUICtrlSetState($EDITINI_DelBtn, $GUI_ENABLE)
    GUICtrlSetState($EDITINI_MoveUpBtn, $GUI_DISABLE)
    GUICtrlSetState($EDITINI_MoveDownBtn, $GUI_DISABLE)
    $nLVSBtnState = 3
    ;Sortiert die Liste, wenn auf Spalte geklickt
    Case $msg1 = $EDITINI_LISTVIEW
    _EditFlag(1, $EDITINI_SaveBtn)
    ReDim $B_DESCENDING[_GUICtrlListViewGetSubItemsCount($EDITINI_LISTVIEW)] ;Setzt die nötigen Voraussetzungen für das Sortieren
    _GUICtrlListViewSort($EDITINI_LISTVIEW, $B_DESCENDING, GUICtrlGetState($EDITINI_LISTVIEW))
    ;Hinzufügen
    Case $msg1 = $EDITINI_AddBtn
    $sAddTitle = ""
    $sAddPath = ""
    $nAddNEditFlag = _AddNEdit("Eintrag hinzufügen", $sAddTitle, $sAddPath)
    If $nAddNEditFlag = 1 Then
    _EditFlag(1, $EDITINI_SaveBtn)
    _GUICtrlListViewInsertItem ($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), $sAddTitle & "|" & $sAddPath)
    ;Setzt die Sichtbarkeit des angefügten Items, wenn vorher in der Liste kein Ort ausgewählt
    If _GUICtrlListViewGetSelectedCount($EDITINI_LISTVIEW) = 0 Then _GUICtrlListViewEnsureVisible($EDITINI_LISTVIEW, _GUICtrlListViewGetItemCount($EDITINI_LISTVIEW)-1, 1)
    Else
    ContinueLoop
    EndIf
    ;Bearbeiten
    Case $msg1 = $EDITINI_EditBtn
    $sAddTitle = _GUICtrlListViewGetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 0)
    $sAddPath = _GUICtrlListViewGetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 1)
    $nAddNEditFlag = _AddNEdit("Eintrag bearbeiten", $sAddTitle, $sAddPath)
    ;Prüfung, ob Änderung
    If $nAddNEditFlag = 1 Then
    If $sAddTitle = _GUICtrlListViewGetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 0) And $sAddPath = _GUICtrlListViewGetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 1) Then
    ContinueLoop
    Else
    _EditFlag(1, $EDITINI_SaveBtn)
    _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 0, $sAddTitle)
    _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 1, $sAddPath)
    EndIf
    Else
    ContinueLoop
    EndIf
    ;Löschen
    Case $msg1 = $EDITINI_DelBtn
    _EditFlag(1, $EDITINI_SaveBtn)
    _GUICtrlListViewDeleteItemsSelected($EDITINI_LISTVIEW)
    ;Hoch
    Case $msg1 = $EDITINI_MoveUpBtn
    If _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW) <> -1 Then ;Wenn keine Auswahl, dann nichts tun
    ;Auslesen der zu verschiebenden Daten
    $aItemMoveUp1 = StringSplit(_GUICtrlListViewGetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW)), "|")
    $aItemMoveUp2 = StringSplit(_GUICtrlListViewGetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW)-1), "|")
    ;Tauschen der Daten in der Listview $aItemMoveUp2
    _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 0, $aItemMoveUp2[1])
    _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 1, $aItemMoveUp2[2])
    _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 2, $aItemMoveUp2[3])
    ;Tauschen der Daten in der Listview $aItemMoveUp1
    _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW)-1, 0, $aItemMoveUp1[1])
    _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW)-1, 1, $aItemMoveUp1[2])
    _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW)-1, 2, $aItemMoveUp1[3])
    ;Auswahl aktualisieren
    If _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW) > 0 Then ;Damit nicht über die Auswahl hinaus gearbeitet wird
    _EditFlag(1, $EDITINI_SaveBtn)
    _GUICtrlListViewSetItemSelState ($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW)-1)
    _GUICtrlListViewSetItemSelState ($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW)+1, 0)
    EndIf
    _GUICtrlListViewEnsureVisible($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 1)
    EndIf
    ;Runter
    Case $msg1 = $EDITINI_MoveDownBtn
    If _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW) <> -1 Then ;Wenn keine Auswahl, dann nichts tun
    If _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW) <= _GUICtrlListViewGetItemCount($EDITINI_LISTVIEW)-2 Then ;Damit nicht über die Auswahl hinaus gearbeitet wird
    _EditFlag(1, $EDITINI_SaveBtn)
    ;Auslesen der zu verschiebenden Daten
    $aItemMoveUp1 = StringSplit(_GUICtrlListViewGetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW)), "|")
    $aItemMoveUp2 = StringSplit(_GUICtrlListViewGetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW)+1), "|")
    ;Tauschen der Daten in der Listview $aItemMoveUp2
    _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 0, $aItemMoveUp2[1])
    _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 1, $aItemMoveUp2[2])
    _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 2, $aItemMoveUp2[3])
    ;Tauschen der Daten in der Listview $aItemMoveUp1
    _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW)+1, 0, $aItemMoveUp1[1])
    _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW)+1, 1, $aItemMoveUp1[2])
    _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW)+1, 2, $aItemMoveUp1[3])
    ;Auswahl aktualisieren
    _GUICtrlListViewSetItemSelState ($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW)+1)
    _GUICtrlListViewSetItemSelState ($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 0)
    _GUICtrlListViewEnsureVisible($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 1)
    EndIf
    EndIf
    ;Testen
    Case $msg1 = $EDITINI_CheckBtn
    For $i = 0 To _GUICtrlListViewGetItemCount($EDITINI_LISTVIEW)-1 ;-1, weil da irgendwie immer ein leeres Item mitgezählt wird
    If FileExists(_GUICtrlListViewGetItemText($EDITINI_LISTVIEW, $i, 1)) Then
    _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, $i, 2, "OK")
    Else
    _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, $i, 2, "ERROR")
    EndIf
    Next
    ;Speichern
    Case $msg1 = $EDITINI_SaveBtn
    _EditFlag(0, $EDITINI_SaveBtn)
    FileDelete(@ScriptDir & "\data.ini")
    For $i = 0 To _GUICtrlListViewGetItemCount($EDITINI_LISTVIEW)-1 ;-1, weil da irgendwie immer ein leeres Item mitgezählt wird
    IniWriteSection(@ScriptDir & "\data.ini", _GUICtrlListViewGetItemText($EDITINI_LISTVIEW, $i, 0), "path=" & _GUICtrlListViewGetItemText($EDITINI_LISTVIEW, $i, 1))
    Next
    ;~ programmdelete()
    ;~ programmcheck()
    ;Exit/Fertig
    Case $msg1 = $EDITINI_ExitBtn Or $msg1 = $GUI_EVENT_CLOSE
    If GUICtrlGetState($EDITINI_SaveBtn) = 80 Then ;Falls der Button aktiviert ist
    $nExitBox = MsgBox(4+32+256,"Datenänderung ignorieren?", "Die Daten wurden geändert. Wollen Sie dennoch das " & @CRLF & "Programm verlassen, ohne die Änderungen gepeichert zu haben?")
    If $nExitBox = 6 Then ;Ja
    ExitLoop
    Else
    ContinueLoop
    EndIf
    Else
    ExitLoop
    EndIf
    EndSelect
    WEnd

    GUIDelete($editinigui) ;Löscht die EditGUI, damit wieder nur mit dem Tray gearbeitet wird
    TraySetState(1)
    EndFunc

    ;----------------------------------------------------------------------
    ;FUNKTION _AddNEdit($sTitle, ByRef $sAddTitle, ByRef $sAddPath)
    ;Eingabemaske der Daten in der ListView
    ;----------------------------------------------------------------------
    Func _AddNEdit($sTitle, ByRef $sAddTitle, ByRef $sAddPath)
    $ADDEDIT_GUI = GUICreate($sTitle, 330, 165)

    GUICtrlCreateGraphic(0, 0, 330, 30)
    GUICtrlSetBkColor(-1, 0xffffff)

    $label1 = GUICtrlCreateLabel("Geben Sie die erforderlichen Daten ein:", 10, 8, 320)
    GUICtrlSetBkColor($label1, 0xffffff)
    GUICtrlSetFont($label1, 10, 550)

    $statuslabel1 = GUICtrlCreateLabel("", 0, 31, 331, 2, BitOR($SS_SIMPLE, $SS_SUNKEN))

    GUICtrlCreateLabel("Programmname:", 10, 48, 80)
    $sAddTitleInput = GUICtrlCreateInput($sAddTitle, 100, 45, 220)
    GUICtrlCreateLabel("Programmpfad:", 10, 78, 80)
    $sAddPathInput = GUICtrlCreateInput($sAddPath, 100, 75, 220)

    $AddWarn = GUICtrlCreateLabel("", 50, 102, 300)
    GUICtrlSetColor($AddWarn, 0xCD4F39)

    GUICtrlCreateLabel("", 0, 120, 331, 2, BitOR($SS_SIMPLE, $SS_SUNKEN))

    $OkBtn = GUICtrlCreateButton("OK", 10, 130, 100)
    $OpenBtn = GUICtrlCreateButton("Suchen...", 115, 130, 100)
    $CancelBtn = GUICtrlCreateButton("Abbrechen", 220, 130, 100)

    Guisetstate()

    While 1
    $msgadd = GUIGetMsg()
    Select
    Case $msgadd = $CancelBtn Or $msgadd = $GUI_EVENT_CLOSE
    $Return = 0
    ExitLoop
    Case $msgadd = $OkBtn
    ;Prüfung, ob leer
    If GUICtrlRead($sAddTitleInput) = "" Or GUICtrlRead($sAddPathInput) = "" Then
    GUICtrlSetData($AddWarn, "Achtung! Die Eingabefelder dürfen nicht leer sein.")
    ContinueLoop
    ;Prüfung, ob Pfad existiert
    ElseIf Not FileExists(GUICtrlRead($sAddPathInput)) Then
    GUICtrlSetData($AddWarn, "Achtung! Die angegebene Datei existiert nicht.")

    ContinueLoop
    ;Alles in Ordnung
    Else
    $sAddTitle = GUICtrlRead($sAddTitleInput)
    $sAddPath = GUICtrlRead($sAddPathInput)
    $Return = 1
    ExitLoop
    EndIf
    Case $msgadd = $OpenBtn
    $sFOD = FileOpenDialog("Ausführbare Datei suchen", Default, "Ausführbare Datei (*.exe;*.bat;*.com)", 1 + 2)
    If $sFOD <> "" Then
    GUICtrlSetData($sAddPathInput, $sFOD)
    $aFODSplit = StringSplit($sFOD, "\")
    GUICtrlSetData($sAddTitleInput, $aFODSplit[$aFODSplit[0]])
    EndIf
    EndSelect
    WEnd

    GUIDelete($ADDEDIT_GUI)

    Return $Return

    EndFunc


    ;----------------------------------------------------------------------
    ;FUNKTION _EditFlag
    ;Setzt die Flag und den Status des Speichern-Buttons
    ;----------------------------------------------------------------------
    Func _EditFlag($nFlag, $Btn)
    If $nFlag = 1 Then
    GUICtrlSetState($Btn, $GUI_ENABLE)
    ElseIf $nFlag = 0 Then
    GUICtrlSetState($Btn, $GUI_DISABLE)
    EndIf
    EndFunc

    Hier das neue, so weit ich es habe:

    Spoiler anzeigen

    #Include <Constants.au3>
    #include <GUIConstants.au3>
    #include <file.au3>
    #Include <Misc.au3>
    #include <Array.au3>
    #include <GuiListView.au3>

    Dim $aAdmins[1] ;Array der auszulesenden Administrator-Profile
    Dim $programmmax
    Dim $profil_array
    Dim $edit
    Dim $aboutitem
    Dim $exititem
    Dim $item1
    Dim $item2
    Dim $item3
    Dim $optiondropbox
    Dim $optionmenu
    Dim $optiontraytip
    Dim $optionautostart
    Dim $optionpasswd
    Dim $optionpathcheck
    Dim $traytipflag
    Dim $passwdsaveflag = 0
    Dim $passwd
    Dim $exitflag = 0
    Dim $helpitem
    Dim $flagoptionsstartup

    _EditIni()

    ;----------------------------------------------------------------------
    ;FUNKTION _EditIni
    ;Erstellt eine GUI zum Bearbeiten der data.ini
    ;----------------------------------------------------------------------
    Func _EditIni()

    $nLVSBtnState = 0 ;Wird zum Aktivieren der Buttons benötigt

    TraySetState(2)

    ;GUI für die EditControl wird erzeugt, hierin findet die Bearbeitung der Ini-Datei statt
    $editinigui = GUICreate("AdminRun", 800, 335)

    GUICtrlCreateGraphic(0, 0, 800, 60)
    GUICtrlSetBkColor(-1, 0xffffff)
    GUICtrlCreatePic(@ScriptDir & "\img\addon.bmp", 15, 20, 16, 16)

    $label1 = GUICtrlCreateLabel("Menüeinträge bearbeiten", 45, 15, 300)
    GUICtrlSetBkColor($label1, 0xffffff)
    GUICtrlSetFont($label1, 9, 600)

    $label2 = GUICtrlCreateLabel("Fügen Sie neue Einträge hinzu oder löschen Sie Einträge", 45, 30, 300)
    GUICtrlSetBkColor($label2, 0xffffff)
    GUICtrlSetFont($label2, 8, 400, 2)

    $statuslabel1 = GUICtrlCreateLabel("", 0, 61, 801, 2, BitOR($SS_SIMPLE, $SS_SUNKEN))

    $EDITINI_LISTVIEW = GUICtrlCreateListView("Programmname|Programmpfad|Status", 0, 62, 800, 229, $LVS_SHOWSELALWAYS, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT,$LVS_EX_HEADERDRAGDROP))
    _GUICtrlListView_SetColumnWidth($EDITINI_LISTVIEW, 0, 200);SPALTENBREITE "Profilname" FESTLEGEN
    _GUICtrlListView_SetColumnWidth($EDITINI_LISTVIEW, 1, 520);SPALTENBREITE "Profilpfad" FESTLEGEN
    _GUICtrlListView_SetColumnWidth($EDITINI_LISTVIEW, 2, 59);SPALTENBREITE "Status" FESTLEGEN

    $EDITINI_AddBtn = GUICtrlCreateButton("Hinzufügen", 10, 300, 80)
    $EDITINI_EditBtn = GUICtrlCreateButton("Bearbeiten", 95, 300, 80)
    $EDITINI_DelBtn = GUICtrlCreateButton("Löschen", 180, 300, 80)
    $EDITINI_MoveUpBtn = GUICtrlCreateButton("Hoch", 265, 300, 80)
    $EDITINI_MoveDownBtn = GUICtrlCreateButton("Runter", 350, 300, 80)
    $EDITINI_CheckBtn = GUICtrlCreateButton("Testen", 435, 300, 80)

    $EDITINI_SaveBtn = GUICtrlCreateButton("Speichern", 585, 300, 100)
    GUICtrlSetState($EDITINI_SaveBtn, $GUI_DISABLE)
    $EDITINI_ExitBtn = GUICtrlCreateButton("Fertig", 690, 300, 100)

    GUISetState()

    ;~ Dim $B_DESCENDING[_GUICtrlListViewGetSubItemsCount($EDITINI_LISTVIEW)] ;Setzt die nötigen Voraussetzungen für das Sortieren

    ;~ ;Auslesen der Ini-Datei in Array
    $aDataIniContent = IniReadSectionNames(@ScriptDir & "\data.ini")
    For $i = 1 To $aDataIniContent[0]
    GUICtrlCreateListViewItem($aDataIniContent[$i] & "|" & IniRead(@ScriptDir & "\data.ini", $aDataIniContent[$i], "path", "Fehler") ,$EDITINI_LISTVIEW) ;Eventuell sollte ich doch Variable zuordnen
    Next

    While 1
    $msg1 = GUIGetMsg()
    $nLVSCountLines = _GUICtrlListView_GetSelectedCount($EDITINI_LISTVIEW) ;Wird zum Aktivieren der Buttons benötigt
    Select
    Case $msg1 = 0
    ContinueLoop
    ;Schalter für Buttons, wenn kein Item gewählt
    Case $nLVSBtnState <> 1 And $nLVSCountLines = 0
    GUICtrlSetState($EDITINI_EditBtn, $GUI_DISABLE)
    GUICtrlSetState($EDITINI_DelBtn, $GUI_DISABLE)
    GUICtrlSetState($EDITINI_MoveUpBtn, $GUI_DISABLE)
    GUICtrlSetState($EDITINI_MoveDownBtn, $GUI_DISABLE)
    $nLVSBtnState = 1
    ;Schalter für Buttons, wenn ein Item gewählt
    Case $nLVSBtnState <> 2 And $nLVSCountLines = 1
    GUICtrlSetState($EDITINI_EditBtn, $GUI_ENABLE)
    GUICtrlSetState($EDITINI_DelBtn, $GUI_ENABLE)
    GUICtrlSetState($EDITINI_MoveUpBtn, $GUI_ENABLE)
    GUICtrlSetState($EDITINI_MoveDownBtn, $GUI_ENABLE)
    $nLVSBtnState = 2
    ;Schalter für Buttons, wenn mehr als ein Item gewählt
    Case $nLVSBtnState <> 3 And $nLVSCountLines > 1
    GUICtrlSetState($EDITINI_EditBtn, $GUI_DISABLE)
    GUICtrlSetState($EDITINI_DelBtn, $GUI_ENABLE)
    GUICtrlSetState($EDITINI_MoveUpBtn, $GUI_DISABLE)
    GUICtrlSetState($EDITINI_MoveDownBtn, $GUI_DISABLE)
    $nLVSBtnState = 3
    ;Sortiert die Liste, wenn auf Spalte geklickt
    Case $msg1 = $EDITINI_LISTVIEW
    ;~ _EditFlag(1, $EDITINI_SaveBtn)
    ;~ ReDim $B_DESCENDING[_GUICtrlListViewGetSubItemsCount($EDITINI_LISTVIEW)] ;Setzt die nötigen Voraussetzungen für das Sortieren
    ;~ _GUICtrlListViewSort($EDITINI_LISTVIEW, $B_DESCENDING, GUICtrlGetState($EDITINI_LISTVIEW))
    ;Hinzufügen
    Case $msg1 = $EDITINI_AddBtn
    $sAddTitle = ""
    $sAddPath = ""
    $nAddNEditFlag = _AddNEdit("Eintrag hinzufügen", $sAddTitle, $sAddPath)
    If $nAddNEditFlag = 1 Then
    _EditFlag(1, $EDITINI_SaveBtn)
    _GUICtrlListView_InsertItem($EDITINI_LISTVIEW, $sAddTitle, _GUICtrlListView_GetSelectionMark(GUICtrlGetHandle($EDITINI_LISTVIEW)))
    _GUICtrlListView_SetSelectionMark(GUICtrlGetHandle($EDITINI_LISTVIEW), _GUICtrlListView_GetSelectionMark(GUICtrlGetHandle($EDITINI_LISTVIEW))-1)
    _GUICtrlListView_SetItemText($EDITINI_LISTVIEW, _GUICtrlListView_GetSelectionMark(GUICtrlGetHandle($EDITINI_LISTVIEW)),$sAddPath, 1)
    ;Setzt die Sichtbarkeit des angefügten Items, wenn vorher in der Liste kein Ort ausgewählt
    ;~ If _GUICtrlListView_GetSelectedCount($EDITINI_LISTVIEW) = 0 Then _GUICtrlListView_EnsureVisible($EDITINI_LISTVIEW, _GUICtrlListView_GetSelectionMark(GUICtrlGetHandle($EDITINI_LISTVIEW))-1, 1)
    Else
    ContinueLoop
    EndIf
    ;Bearbeiten
    Case $msg1 = $EDITINI_EditBtn
    ;~ $sAddTitle = _GUICtrlListViewGetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 0)
    ;~ $sAddPath = _GUICtrlListViewGetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 1)
    ;~ $nAddNEditFlag = _AddNEdit("Eintrag bearbeiten", $sAddTitle, $sAddPath)
    ;~ ;Prüfung, ob Änderung
    ;~ If $nAddNEditFlag = 1 Then
    ;~ If $sAddTitle = _GUICtrlListViewGetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 0) And $sAddPath = _GUICtrlListViewGetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 1) Then
    ;~ ContinueLoop
    ;~ Else
    ;~ _EditFlag(1, $EDITINI_SaveBtn)
    ;~ _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 0, $sAddTitle)
    ;~ _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 1, $sAddPath)
    ;~ EndIf
    ;~ Else
    ;~ ContinueLoop
    ;~ EndIf
    ;Löschen
    Case $msg1 = $EDITINI_DelBtn
    _EditFlag(1, $EDITINI_SaveBtn)
    _GUICtrlListView_DeleteItemsSelected(GUICtrlGetHandle($EDITINI_LISTVIEW))
    ;Hoch
    Case $msg1 = $EDITINI_MoveUpBtn
    ;~ If _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW) <> -1 Then ;Wenn keine Auswahl, dann nichts tun
    ;~ ;Auslesen der zu verschiebenden Daten
    ;~ $aItemMoveUp1 = StringSplit(_GUICtrlListViewGetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW)), "|")
    ;~ $aItemMoveUp2 = StringSplit(_GUICtrlListViewGetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW)-1), "|")
    ;~ ;Tauschen der Daten in der Listview $aItemMoveUp2
    ;~ _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 0, $aItemMoveUp2[1])
    ;~ _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 1, $aItemMoveUp2[2])
    ;~ _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 2, $aItemMoveUp2[3])
    ;~ ;Tauschen der Daten in der Listview $aItemMoveUp1
    ;~ _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW)-1, 0, $aItemMoveUp1[1])
    ;~ _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW)-1, 1, $aItemMoveUp1[2])
    ;~ _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW)-1, 2, $aItemMoveUp1[3])
    ;~ ;Auswahl aktualisieren
    ;~ If _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW) > 0 Then ;Damit nicht über die Auswahl hinaus gearbeitet wird
    ;~ _EditFlag(1, $EDITINI_SaveBtn)
    ;~ _GUICtrlListViewSetItemSelState ($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW)-1)
    ;~ _GUICtrlListViewSetItemSelState ($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW)+1, 0)
    ;~ EndIf
    ;~ _GUICtrlListViewEnsureVisible($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 1)
    ;~ EndIf
    ;Runter
    Case $msg1 = $EDITINI_MoveDownBtn
    ;~ If _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW) <> -1 Then ;Wenn keine Auswahl, dann nichts tun
    ;~ If _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW) <= _GUICtrlListViewGetItemCount($EDITINI_LISTVIEW)-2 Then ;Damit nicht über die Auswahl hinaus gearbeitet wird
    ;~ _EditFlag(1, $EDITINI_SaveBtn)
    ;~ ;Auslesen der zu verschiebenden Daten
    ;~ $aItemMoveUp1 = StringSplit(_GUICtrlListViewGetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW)), "|")
    ;~ $aItemMoveUp2 = StringSplit(_GUICtrlListViewGetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW)+1), "|")
    ;~ ;Tauschen der Daten in der Listview $aItemMoveUp2
    ;~ _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 0, $aItemMoveUp2[1])
    ;~ _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 1, $aItemMoveUp2[2])
    ;~ _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 2, $aItemMoveUp2[3])
    ;~ ;Tauschen der Daten in der Listview $aItemMoveUp1
    ;~ _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW)+1, 0, $aItemMoveUp1[1])
    ;~ _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW)+1, 1, $aItemMoveUp1[2])
    ;~ _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW)+1, 2, $aItemMoveUp1[3])
    ;~ ;Auswahl aktualisieren
    ;~ _GUICtrlListViewSetItemSelState ($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW)+1)
    ;~ _GUICtrlListViewSetItemSelState ($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 0)
    ;~ _GUICtrlListViewEnsureVisible($EDITINI_LISTVIEW, _GUICtrlListViewGetCurSel($EDITINI_LISTVIEW), 1)
    ;~ EndIf
    ;~ EndIf
    ;Testen
    Case $msg1 = $EDITINI_CheckBtn
    ;~ For $i = 0 To _GUICtrlListViewGetItemCount($EDITINI_LISTVIEW)-1 ;-1, weil da irgendwie immer ein leeres Item mitgezählt wird
    ;~ If FileExists(_GUICtrlListViewGetItemText($EDITINI_LISTVIEW, $i, 1)) Then
    ;~ _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, $i, 2, "OK")
    ;~ Else
    ;~ _GUICtrlListViewSetItemText($EDITINI_LISTVIEW, $i, 2, "ERROR")
    ;~ EndIf
    ;~ Next
    ;Speichern
    Case $msg1 = $EDITINI_SaveBtn
    _EditFlag(0, $EDITINI_SaveBtn)
    FileDelete(@ScriptDir & "\data.ini")
    For $i = 0 To _GUICtrlListView_GetItemCount($EDITINI_LISTVIEW)-1 ;-1, weil da irgendwie immer ein leeres Item mitgezählt wird
    IniWriteSection(@ScriptDir & "\data.ini", _GUICtrlListView_GetItemText($EDITINI_LISTVIEW, $i, 0), "path=" & _GUICtrlListView_GetItemText($EDITINI_LISTVIEW, $i, 1))
    Next
    ;~ programmdelete()
    ;~ programmcheck()
    ;Exit/Fertig
    Case $msg1 = $EDITINI_ExitBtn Or $msg1 = $GUI_EVENT_CLOSE
    If GUICtrlGetState($EDITINI_SaveBtn) = 80 Then ;Falls der Button aktiviert ist
    $nExitBox = MsgBox(4+32+256,"Datenänderung ignorieren?", "Die Daten wurden geändert. Wollen Sie dennoch das " & @CRLF & "Programm verlassen, ohne die Änderungen gepeichert zu haben?")
    If $nExitBox = 6 Then ;Ja
    ExitLoop
    Else
    ContinueLoop
    EndIf
    Else
    ExitLoop
    EndIf
    EndSelect
    WEnd

    GUIDelete($editinigui) ;Löscht die EditGUI, damit wieder nur mit dem Tray gearbeitet wird
    TraySetState(1)
    EndFunc

    ;----------------------------------------------------------------------
    ;FUNKTION _AddNEdit($sTitle, ByRef $sAddTitle, ByRef $sAddPath)
    ;Eingabemaske der Daten in der ListView
    ;----------------------------------------------------------------------
    Func _AddNEdit($sTitle, ByRef $sAddTitle, ByRef $sAddPath)
    $ADDEDIT_GUI = GUICreate($sTitle, 330, 165)

    GUICtrlCreateGraphic(0, 0, 330, 30)
    GUICtrlSetBkColor(-1, 0xffffff)

    $label1 = GUICtrlCreateLabel("Geben Sie die erforderlichen Daten ein:", 10, 8, 320)
    GUICtrlSetBkColor($label1, 0xffffff)
    GUICtrlSetFont($label1, 10, 550)

    $statuslabel1 = GUICtrlCreateLabel("", 0, 31, 331, 2, BitOR($SS_SIMPLE, $SS_SUNKEN))

    GUICtrlCreateLabel("Programmname:", 10, 48, 80)
    $sAddTitleInput = GUICtrlCreateInput($sAddTitle, 100, 45, 220)
    GUICtrlCreateLabel("Programmpfad:", 10, 78, 80)
    $sAddPathInput = GUICtrlCreateInput($sAddPath, 100, 75, 220)

    $AddWarn = GUICtrlCreateLabel("", 50, 102, 300)
    GUICtrlSetColor($AddWarn, 0xCD4F39)

    GUICtrlCreateLabel("", 0, 120, 331, 2, BitOR($SS_SIMPLE, $SS_SUNKEN))

    $OkBtn = GUICtrlCreateButton("OK", 10, 130, 100)
    $OpenBtn = GUICtrlCreateButton("Suchen...", 115, 130, 100)
    $CancelBtn = GUICtrlCreateButton("Abbrechen", 220, 130, 100)

    Guisetstate()

    While 1
    $msgadd = GUIGetMsg()
    Select
    Case $msgadd = $CancelBtn Or $msgadd = $GUI_EVENT_CLOSE
    $Return = 0
    ExitLoop
    Case $msgadd = $OkBtn
    ;Prüfung, ob leer
    If GUICtrlRead($sAddTitleInput) = "" Or GUICtrlRead($sAddPathInput) = "" Then
    GUICtrlSetData($AddWarn, "Achtung! Die Eingabefelder dürfen nicht leer sein.")
    ContinueLoop
    ;Prüfung, ob Pfad existiert
    ElseIf Not FileExists(GUICtrlRead($sAddPathInput)) Then
    GUICtrlSetData($AddWarn, "Achtung! Die angegebene Datei existiert nicht.")

    ContinueLoop
    ;Alles in Ordnung
    Else
    $sAddTitle = GUICtrlRead($sAddTitleInput)
    $sAddPath = GUICtrlRead($sAddPathInput)
    $Return = 1
    ExitLoop
    EndIf
    Case $msgadd = $OpenBtn
    $sFOD = FileOpenDialog("Ausführbare Datei suchen", Default, "Ausführbare Datei (*.exe;*.bat;*.com)", 1 + 2)
    If $sFOD <> "" Then
    GUICtrlSetData($sAddPathInput, $sFOD)
    $aFODSplit = StringSplit($sFOD, "\")
    GUICtrlSetData($sAddTitleInput, $aFODSplit[$aFODSplit[0]])
    EndIf
    EndSelect
    WEnd

    GUIDelete($ADDEDIT_GUI)

    Return $Return

    EndFunc


    ;----------------------------------------------------------------------
    ;FUNKTION _EditFlag
    ;Setzt die Flag und den Status des Speichern-Buttons
    ;----------------------------------------------------------------------
    Func _EditFlag($nFlag, $Btn)
    If $nFlag = 1 Then
    GUICtrlSetState($Btn, $GUI_ENABLE)
    ElseIf $nFlag = 0 Then
    GUICtrlSetState($Btn, $GUI_DISABLE)
    EndIf
    EndFunc

    Im Anhang findet ihr die ini, die ich benutze.

    Eines der Probleme ist, dass ich, wenn ein Eintrag hinzugefügt wurde und diesen auswähle, Buttons ausgelöst werden. Ich verstehe nicht einmal im Ansatz, was die Buttons mit der ListView zu tun haben sollten. Zum Beispiel wird "automatisch" gespeichert.

    Außerdem verstehe ich nicht, wozu ich noch GuiCtrlCreateListView brauche, wenn es _GuiCtrlListView_Create gibt?

    Vielen Dank für die Hilfe!

    Dateien

    data.zip 429 Byte – 394 Downloads
  • AdminRun - Programme mit Adminrechten starten

    • unearth
    • 30. November 2007 um 15:25

    Update mit einigen Neuerungen. Mehr dazu im Ursprungspost.

    Konnte das Update als Script hier nicht mehr hinterlegen. Zeichenbeschränkung hat rumgemäkelt.

    Grüße unearth

  • Progress: STDOUT und ZIP.exe

    • unearth
    • 27. November 2007 um 23:19

    Hallo,

    das muss ich mir mal genauer anschauen, sieht aber sehr interessant aus. Vielen Dank schon einmal.

    Gruß unearth

  • Progress: STDOUT und ZIP.exe

    • unearth
    • 26. November 2007 um 17:10

    Hi,

    ich zermarter mir schon seit Wochen das Hirn, habe zwischenzeitlich auch schon aufgegeben, aber nun mal doch eine Frage dazu:

    Ich habe ein kleines Script, das in einer Funktion mit der ZIP.exe Daten (Ordner) komprimiert. Läuft alles einwandfrei, nur möchte ich eigentlich einen ProgressBar haben. Nun ist das ja prinzipiell erst mal kein Problem. Ich könnte mit _FileListToArray und ein wenig Aufwand ja rekursiv alle Ordner und Unterordner durchgehen, bis ich alle Dateien hab, und diese dann mit den Werten aus dem StandardOutput des ZIP-Vorgangs abgleichen. So zumindest meine Theorie.

    1. Ich frage mich nur, ob das nicht auch einfacher geht?
    2. Alle meine bisherigen Versuche mit StdOutRead endeten damit, dass ich das, was die ZIP.exe in Command-Fenster immer schön in einer Zeile ausgab, auch mal über mehrere Zeile zerhackstückt erhalte. Wie kann ich das ändern oder verhindern?

    Sollte sich Punkt 2 nicht ändern lassen, muss ich in StringRegExp wohl über meinen Freischwimmer hinauskommen und lästig viel Zeit investieren. ;)

    Hier das Script. Ihr bräuchtet aber die ZIP.exe und müsstet zum Testen die Angaben anpassen. Es sollte aber reichen, damit ihr eine Idee davon habt, was ich mache.

    Spoiler anzeigen
    [autoit]

    #include "Constants.au3"
    #include "GUIConstants.au3"

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

    $destination = FileGetShortName("D:\Mediendaten\Skripte\zip.zip") ;Muss wohl in der Kurzform sein
    $source = FileGetShortName("D:\Sicherungsdaten\Backup") ;Muss wohl in der Kurzform sein
    $compressionrate = 6 ;Setzt die Option, wie schnell die Dateien komprimiert werden.

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

    $foo = Run("D:\data\zip\zip.exe" & " -R -S -v -" & $compressionrate & " " & $destination & " " & $source & "\*", $source, Default, $STDOUT_CHILD);Parameter -R ist in Verbindung mit dem Working directory auf $source notwendig, um die Daten exakt so zu verarbeiten, wie ich es gerne hätte.

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

    $test = GUICreate("Test", 600, 600)

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

    $test = GUICtrlCreateEdit("", 10, 10, 285, 590)
    $test2 = GUICtrlCreateEdit("", 305, 10, 285, 590)

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

    GUISetState()

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

    While 1
    $line = StdoutRead($foo)
    If @error = 0 Then GUICtrlSetData($test, $line & @CRLF, 1)

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

    ;~ $line2 = StdinWrite($foo)
    ;~ If @error <> 0 Then GUICtrlSetData($test2, $line2 & @CRLF, 1)

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

    $msg = GUIGetMsg()

    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd

    [/autoit]

    EDIT: Zur Zeit lasse ich das Script die Daten in eine EditBox laufen, um überhaupt zu sehen, was am Ende rumspringt.

    Sollte es nur so möglich sein, wie oben beschrieben, weiß ich wenigstens, dass sich die Mühe lohnt. Ich hab nur keine Lust bei meinen AutoIt-Kenntnissen eine Woche Arbeit in 300 Zeilen Code zu investieren, wenn später jemand dasselbe in 20 Zeilen macht. :D

    Gruß unearth

  • Checkbox - Wie weiter ?

    • unearth
    • 23. November 2007 um 02:43

    Simpel:

    [autoit]

    #include <GUIConstants.au3>

    Opt("GUIOnEventMode", 1)
    GUICreate("My GUI Checkbox") ; will create a dialog box that when displayed is centered

    $checkCN = GUICtrlCreateCheckbox ("CHECKBOX 1", 10, 10, 120, 20)

    $button = GUICtrlCreateButton("Test", 10, 40, 80)
    GUICtrlSetOnEvent($button, "_Button")

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

    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

    GUISetState () ; will display an dialog box with 1 checkbox

    ; Run the GUI until the dialog is closed
    While 1
    Sleep(1000)
    Wend

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

    Func _Exit()
    Exit
    EndFunc

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

    Func _Button()
    If GUICtrlRead($checkCN) = $GUI_CHECKED Then
    MsgBox(0, "", "An")
    Else
    MsgBox(0, "", "Aus")
    EndIf
    EndFunc

    [/autoit]

    Den Rest kriegste mit Hilfe und Forum-Suche raus. ;)

  • Ich find die Fehler im Code nicht

    • unearth
    • 21. November 2007 um 18:41

    Das liegt doch wohl eher daran, dass das Next, das die 2. For-Schleife beenden sollte, in einer If-Then-Abfrage innerhalb der Schleife selbst liegt. Damit fliegt das Schachteltürmchen mal ordentlich durcheinander, da hier mal ein EndIf fehlt, dann ist das Next nicht zugeordnet usw. Verschachtelung ist mit AutoIt schon drin, die Schachteln ineinander knüllen eher nicht.

  • Checkbox - Wie weiter ?

    • unearth
    • 21. November 2007 um 18:14

    Eine kleine Erweiterung des Hilfe-Beispiels, bittschön:

    [autoit]

    #include <GUIConstants.au3>

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

    GUICreate("My GUI Checkbox") ; will create a dialog box that when displayed is centered

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

    $checkCN = GUICtrlCreateCheckbox ("CHECKBOX 1", 10, 10, 120, 20)

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

    $button = GUICtrlCreateButton("Test", 10, 40, 80)

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

    GUISetState () ; will display an dialog box with 1 checkbox

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

    ; Run the GUI until the dialog is closed
    While 1
    $msg = GUIGetMsg()

    If $msg = $button Then
    If GUICtrlRead($checkCN) = $GUI_CHECKED Then
    MsgBox(0, "", "An")
    Else
    MsgBox(0, "", "Aus")
    EndIf
    EndIf

    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    Wend

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]
  • ComboBox Daten in Zahlen umwandeln

    • unearth
    • 21. November 2007 um 16:34

    Mal grob drüber geschaut:

    Zitat

    Original von Fast2

    [autoit]

    C:\Dokumente und Einstellungen\Fabian\Desktop\DragRacer\DragRacer3 T 1.2.au3(31,22) : ERROR: syntax error
    GUICtrlSetData($CBH, )

    [/autoit]

    Du musst noch den zweiten Parameter, also den Text, der eingegeben werden soll, angeben. Zumindest "" für Nichts.

    Zitat

    Original von Fast2

    [autoit]

    C:\Dokumente und Einstellungen\Fabian\Desktop\DragRacer\DragRacer3 T 1.2.au3(72,26) : WARNING: $ar: possibly used before declaration.
    For $i = 1 To $ar[0]
    ~~~~~~~~~~~~~~~~~~~~^
    C:\Dokumente und Einstellungen\Fabian\Desktop\DragRacer\DragRacer3 T 1.2.au3(72,26) : ERROR: $ar: undeclared global variable.
    For $i = 1 To $ar[0]

    [/autoit]

    Die Variable $ar hast Du ja gar nicht definiert. In Deinem Script müssten das entsprechend $IA1, $IA2 und/oder $IA3 sein, da diese ja die zu prüfenden Strings enthalten.

  • Desktopsperre per USB-Stick

    • unearth
    • 21. November 2007 um 15:18

    Weiß nicht, wofür ich es gebrauchen könnte. Ist aber ein lustiger Effekt. Kann man die Desktopsperre nicht aber mit BlockInput() oder ähnlichen Funktionen effektiver gestalten?

  • auf Tabklick reagieren

    • unearth
    • 21. November 2007 um 12:45

    Ich habe eben gemerkt, dass es nicht gehen kann. Sorry, dass ich Dich verwirrt habe. Zuhause habe ich in einem Script so was mal gelöst, aber ich kann mich nicht erinnern und bin jetzt auf der Arbeit.

  • FireFox mit Tabs Starten

    • unearth
    • 21. November 2007 um 12:40

    Du hast echt massig Auswahl, dies zu bewerkstelligen:

    1. Standardlesezeichen des FF entsprechend einstellen (simpel)
    2. Erweiterung mit integriertem Sitzungsmanager (Vorteil: Ist direkt in FF integriert)
    3. Run(<Pfad zum Firefox> & "firefox.exe https://autoit.de/www.google.ch https://autoit.de/www.spiegel.de") (Man ruft einfach den FF auf und gibt als Parameter die in Tabs zu öffnenden Seiten an)
    4. Ähnliches wie in Punkt 3 nur mit eine Batchdatei
    5. FF-UDF von Stilgar (Für den Fall fast zu viel)
    6. Deine Variante (Umständlich, da der FF so was eigentlich wirklich mitbringt)

    Du hast die Wahl

  • auf Tabklick reagieren

    • unearth
    • 21. November 2007 um 12:13

    Ich mag völlig falsch liegen, aber hilft das:

    [autoit]

    Case $msg = GUICtrlRead($tab1,1)

    [/autoit]

    Wenn mit advanced mode der GUIEventMode gemeint ist, sollte das die ControlID des Tabs sein. Ich fische jetzt auch ein wenig im Trüben, aber es könnte den Versuch wert sein.

  • Focus auf Textfeld setzen

    • unearth
    • 21. November 2007 um 11:39

    Ich habe nicht so viel Ahnung von der IE.au3, aber sollte _IEAction nicht so etwas mit der Aktion "focus" bewirken? Ein wenig Suche in der Hilfe sollte da ausreichen. ;)

  • auf Tabklick reagieren

    • unearth
    • 21. November 2007 um 11:33

    Wenn Du nicht im advanced mode, auf den die Hilfe bei GuiCtrlCreateTabItem verweist, bist, müsste doch einfach Case $msg = $tab1 klappen, oder?

    Ohne Script ist das ziemlich schwer.

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™