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

Beiträge von DerSchatten

  • Registryeinträge in Listenfeld übernehmen

    • DerSchatten
    • 3. September 2007 um 11:37

    Nein, es handelt sich tatsächlich um Keys, keine Werte:

    Bsp:

    HKEY_LOCAL_MACHINE\SOFTWARE\MasterBackup\1
    HKEY_LOCAL_MACHINE\SOFTWARE\MasterBackup\2
    HKEY_LOCAL_MACHINE\SOFTWARE\MasterBackup\3
    HKEY_LOCAL_MACHINE\SOFTWARE\MasterBackup\4
    HKEY_LOCAL_MACHINE\SOFTWARE\MasterBackup\5
    HKEY_LOCAL_MACHINE\SOFTWARE\MasterBackup\6

    Habe aber die Ursache gefunden.
    Und zwar tritt der Fehler dann auf, wenn dieser Key nicht existiert.
    Das heißt man müßte zuvor abfragen ob dieser existiert.

  • Registryeinträge in Listenfeld übernehmen

    • DerSchatten
    • 3. September 2007 um 11:18

    Bekomme den Fehler: Array variable has incorrect number ....

    [autoit]

    Dim $arSubKey[1] = [0]
    $i = 1
    While 1
    $subkey = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\MasterBackup", $i)
    ;$var2 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\MasterBackup\" & $i, "Name")
    if @error Then ExitLoop
    $arSubKey[0] += 1
    ReDim $arSubKey[UBound($arSubKey)+1]
    $arSubKey[UBound($arSubKey)-1] = $subkey
    $i += 1
    WEnd
    ;_ArrayDisplay($arSubKey)
    MsgBox(0, 'größter numerischer Wert', _ArrayMax($arSubKey, 1, 1))

    [/autoit]

    Wozu dient das _ArrayDisplay($arSubKey) ?

  • Registryeinträge in Listenfeld übernehmen

    • DerSchatten
    • 2. September 2007 um 23:38

    Daran habe ich auch schon gedacht. Dies stellt mich allerdings vor ein ähnliches Problem.
    Mit RegEnumKey komme ich nicht weiter. Es kommt ja auch vor das der Schlüssel mit der Nummer 10 zb. zwischen der Nummerierung steht:
    1
    10
    2
    3
    4

    Gibt es sowas wie. "Gib die höchste Nummer aus" ?

  • Registryeinträge in Listenfeld übernehmen

    • DerSchatten
    • 2. September 2007 um 23:19

    Danke euch! Das sollte mir erst mal weiterhelfen.

    Habe da noch eine weitere Frage:
    Ich habe in der Registry durchnummerierte Schlüssel erstellt:
    1
    2
    3
    5

    Wird nun einer der Schlüssel dazwischen gelöscht, fehlt diese Nummer dann.
    Jetzt möchte ich gerne abfragen welche Nummer noch frei ist und per:

    [autoit]

    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\MasterBackup\" & $var2, "Name", "REG_SZ", GUICtrlRead($Input1))

    [/autoit]


    einen freien nummerierten Schlüssel erstellen.
    Damit das ganze dann so aussieht:
    1
    2
    3
    4
    5

    Ich habe schon einiges ausprobiert.
    Aber ich komme auf keinen grünen Zweig.
    Vielleicht habt ihr da auch einen Tip für mich.

  • Registryeinträge in Listenfeld übernehmen

    • DerSchatten
    • 2. September 2007 um 17:11

    Nein, ich meine bei Klick auf eines der Listeneinträge eine ausgabe zu tätigen.

  • Registryeinträge in Listenfeld übernehmen

    • DerSchatten
    • 2. September 2007 um 16:47

    Danke, nur wie kombiniert man jetzt das ganze?

  • Registryeinträge in Listenfeld übernehmen

    • DerSchatten
    • 2. September 2007 um 16:09

    Hallo,
    Punkt 1 konnte ich lösen.

    Für das zweite Problem habe ich noch keine Lösung gefunden.
    Die Abfrage des Klicks ist nicht das Problem, sondern den "Index des selektierten ListView Eintrages abzufragen".

    Kann mir da jemand weiterhelfen?

  • Registryeinträge in Listenfeld übernehmen

    • DerSchatten
    • 1. September 2007 um 20:43

    Ich möchte gerne folgendes realisieren:
    Per Schlatfläche sollen bestimmte Registryeinträge in ein Listenfeld übernommen werden. Und zwar jeder Keywert in eine eigene Spalte im Listenfeld.

    Das ganze sieht momentan so aus:

    [autoit]

    Select
    Case $nMsg = $Button1
    $i = 1
    Dim $Programm[4]
    while $i <=3
    $var = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\MasterBackup\" & $i, "Name")
    $Programm[$i] = GUICtrlCreateListViewItem($var, $ListView1)
    GUICtrlSetData($Programm[$i],$var)
    $i = $i + 1
    WEnd
    EndSelect

    [/autoit]

    Funktioniert prinzipel problemlos.
    Nur möchte ich den Wert 4 bzw. 3 durch die Anzahl ersetzen der wirklich vorhandenen Schlüssel in der Registry.
    Wie kann ich das vorher überprüfen?

    meine zweite Frage wäre, wie fragt mein einen Klick auf einen der Listenfeldeinträge ab?

  • Variablen aus Werte erstellen

    • DerSchatten
    • 31. August 2007 um 20:38

    Supa, danke! Das wars!

  • Variablen aus Werte erstellen

    • DerSchatten
    • 31. August 2007 um 13:41

    Hab ich:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    $Form1 = GUICreate("Backup-System", 629, 449, 664, 419)
    $Label1 = GUICtrlCreateLabel("Bitte die gewünschten Programme für die Sicherung auswählen", 32, 16, 493, 23)
    GUICtrlSetFont(-1, 12, 800, 4, "Arial")
    GUICtrlSetColor(-1, 0x0000FF)
    $progressbar1 = GUICtrlCreateProgress (72,340,200,20)
    $Button1 = GUICtrlCreateButton("Alle", 72, 390, 75, 25, 0)
    $Button2 = GUICtrlCreateButton("Keine", 200, 390, 75, 25, 0)
    $Button3 = GUICtrlCreateButton("OK", 72, 422, 75, 25, 0)
    $Button4 = GUICtrlCreateButton("Abbrechen", 200, 422, 75, 25, 0)
    $Label1 = GUICtrlCreateLabel("Pfad:",45,363,25,21)
    $pfad = GUICtrlCreateInput("E:\Rettungsdaten\Programme\SICHERUNG\", 72, 360, 300, 21)
    $Auswahl = GUICtrlCreateButton("...", 375, 359, 19, 22, 0)
    $auswahl = GUICtrlCreateGroup("Auswahl:", 88, 64, 217, 273)
    $TreeView1 = GUICtrlCreateTreeView(96, 80, 200, 250, BitOR($TVS_DISABLEDRAGDROP,$TVS_SHOWSELALWAYS,$TVS_CHECKBOXES,$WS_GROUP,$WS_TABSTOP))
    Dim $TreeView[13]
    If FileExists("C:\Program Files\ACDSee\9.0") Then $TreeView[0] = GUICtrlCreateTreeViewItem("ACDSee 9.0", $TreeView1)
    If FileExists("C:\Users\User1\AppData\Roaming\Adobe\Adobe Photoshop CS3\Adobe Photoshop CS3 Settings\WorkSpaces") Then $TreeView[1] = GUICtrlCreateTreeViewItem("Adobe CS3 Arbeitsbereich", $TreeView1)
    If FileExists("C:\Program Files\CDLIB") Then $TreeView[2] = GUICtrlCreateTreeViewItem("CD Library 4.0", $TreeView1)
    If FileExists("C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\Hagel Technologies\DU Meter") Then $TreeView[3] = GUICtrlCreateTreeViewItem("DU Meter", $TreeView1)
    If FileExists("C:\Users\User1\Documents\Turbo Lister Backup") Then $TreeView[4] = GUICtrlCreateTreeViewItem("eBay TurboLister2", $TreeView1)
    If FileExists("C:\Users\User1\AppData\Roaming\FlashGet\DataBase") Then $TreeView[5] = GUICtrlCreateTreeViewItem("FlashGet", $TreeView1)
    If FileExists("C:\Users\User1\AppData\Roaming\Logitech\SetPoint") Then $TreeView[6] = GUICtrlCreateTreeViewItem("Logitech Mauseinstellungen", $TreeView1)
    If FileExists("C:\Program Files\PhotoWatermark Professional 6") Then $TreeView[7] = GUICtrlCreateTreeViewItem("PhotoWatermark Professional 6", $TreeView1)
    If FileExists("C:\Dokumente und Einstellungen\User1\Anwendungsdaten\Radmin") Then $TreeView[8] = GUICtrlCreateTreeViewItem("Radmin Viewer 3.0", $TreeView1)
    If FileExists("C:\Program Files\SciTE") Then $TreeView[9] = GUICtrlCreateTreeViewItem("SciTE", $TreeView1)
    If FileExists("C:\Users\User1\AppData\Roaming\SpeedProject\SpeedCommander 11") Then $TreeView[10] = GUICtrlCreateTreeViewItem("Speed Commander 11", $TreeView1)
    If FileExists("C:\Program Files\Windows Mail") Then $TreeView[11] = GUICtrlCreateTreeViewItem("Windows Mail", $TreeView1)
    If FileExists("C:\Program Files\WinSCP") Then $TreeView[12] = GUICtrlCreateTreeViewItem("WinSCP", $TreeView1)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_SHOW)
    For $a = 0 to Ubound($TreeView) -1
    GUICtrlSetState($TreeView[$a], $GUI_CHECKED)
    Next

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

    While 1
    $nMsg = GUIGetMsg()
    Select
    Case $nMsg = $GUI_EVENT_CLOSE
    Exit
    Case $nMsg = $Button1
    For $a = 0 to Ubound($TreeView) -1
    GUICtrlSetState($TreeView[$a], $GUI_CHECKED)
    Next
    Case $nMsg = $Button2
    For $a = 0 to Ubound($TreeView) -1
    GUICtrlSetState($TreeView[$a], $GUI_UNCHECKED)
    Next
    Case $nMsg = $Button3
    $wert = 0
    $regedit = "regedit.exe /E"
    If GUICtrlRead ($TreeView[0]) = 4 Then
    Run ($regedit & " " & GUICtrlRead($pfad) & "ACDSee.reg" & " " & '"HKEY_CURRENT_USER\Software\ACD Systems\ACDSee\90"') ;ACDSee
    GUICtrlSetData ($progressbar1,1)
    EndIf
    If GUICtrlRead ($TreeView[1]) = 4 Then
    FileCopy("C:\Users\User1\AppData\Roaming\Adobe\Adobe Photoshop CS3\Adobe Photoshop CS3 Settings\WorkSpaces\User1", GUICtrlRead($pfad)) ;Adobe Arbeitsbereich
    GUICtrlSetData ($progressbar1,2)
    EndIf
    If GUICtrlRead ($TreeView[2]) = 4 Then
    FileCopy("C:\Program Files\CDLIB\Data\Cdlib.ini", GUICtrlRead($pfad)) ;CD Library Einstellungen
    FileCopy("C:\Program Files\CDLIB\CDLIB.MDB", GUICtrlRead($pfad)) ;CD Library Datenbank
    GUICtrlSetData ($progressbar1,3)
    EndIf
    If GUICtrlRead ($TreeView[3]) = 4 Then
    Run ($regedit & " " & GUICtrlRead($pfad) & "DUMeter.reg" & " " & '"HKEY_CURRENT_USER\Software\Hagel\DU Meter"') ;DU Meter Einstellungen
    FileCopy("C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\Hagel Technologies\DU Meter\log.csv", GUICtrlRead($pfad)) ;DU Meter Statistik
    GUICtrlSetData ($progressbar1,4)
    EndIf
    If GUICtrlRead ($TreeView[4]) = 4 Then
    FileCopy("C:\Users\User1\Documents\Turbo Lister Backup\*.*", GUICtrlRead($pfad)) ;eBay TurboLister
    GUICtrlSetData ($progressbar1,5)
    EndIf
    If GUICtrlRead ($TreeView[5]) = 4 Then
    ;Run ($regedit & " " & GUICtrlRead($pfad) & "FlashGet.reg" & " " & '"HKEY_CURRENT_USER\Software\JetCar"') ;FlasGet Einstellungen
    FileCopy("C:\Users\User1\AppData\Roaming\FlashGet\DataBase\*.*", GUICtrlRead($pfad)) ;FlashGet Einstellungen
    GUICtrlSetData ($progressbar1,6)
    EndIf
    If GUICtrlRead ($TreeView[6]) = 4 Then
    FileCopy("C:\Users\User1\AppData\Roaming\Logitech\SetPoint\user.xml", GUICtrlRead($pfad)) ;Maus
    GUICtrlSetData ($progressbar1,7)
    EndIf
    If GUICtrlRead ($TreeView[7]) = 4 Then
    FileCopy("C:\Users\User1\Documents\My Watermarks\*.wmk", GUICtrlRead($pfad)) ;PhotoWatermark Watermarks
    FileCopy("C:\Program Files\PhotoWatermark Professional 6\watermark.ini", GUICtrlRead($pfad)) ;PhotoWatermark Einstellungen
    GUICtrlSetData ($progressbar1,8)
    EndIf
    If GUICtrlRead ($TreeView[8]) = 4 Then
    Run ($regedit & " " & GUICtrlRead($pfad) & "RAdmin.reg" & " " & '"HKEY_CURRENT_USER\Software\Radmin"') ;RAdmin Einstellungen
    FileCopy("C:\Dokumente und Einstellungen\User1\Anwendungsdaten\Radmin\radmin.rpb", GUICtrlRead($pfad)) ;RAdmin Adressbuch
    GUICtrlSetData ($progressbar1,9)
    EndIf
    If GUICtrlRead ($TreeView[9]) = 4 Then
    FileCopy("C:\Program Files\SciTE\locale.properties", GUICtrlRead($pfad)) ;SciTE Deutsche Sprachdatei
    FileCopy("C:\Program Files\SciTE\SciTEGlobal.properties", GUICtrlRead($pfad)) ;SciTE Konfiguration
    GUICtrlSetData ($progressbar1,10)
    EndIf
    If GUICtrlRead ($TreeView[10]) = 4 Then
    FileCopy("C:\Users\User1\AppData\Roaming\SpeedProject\SpeedCommander 11\SpeedCommander.xml", GUICtrlRead($pfad)) ;Speed Commander
    GUICtrlSetData ($progressbar1,11)
    EndIf
    If GUICtrlRead ($TreeView[11]) = 4 Then
    Run ($regedit & " " & GUICtrlRead($pfad) & "WindowsMail.reg" & " " & '"HKEY_CURRENT_USER\Software\Microsoft\Windows Mail"') ;Windows Mail
    GUICtrlSetData ($progressbar1,12)
    EndIf
    If GUICtrlRead ($TreeView[12]) = 4 Then
    Run ($regedit & " " & GUICtrlRead($pfad) & "WinSCP.reg" & " " & '"HKEY_CURRENT_USER\Software\Martin Prikryl\WinSCP 2"') ;WinSCP
    GUICtrlSetData ($progressbar1,13)
    EndIf
    $res = BitOr(GUICTRLRead($TreeView[0]), $GUI_CHECKED)
    MSgBox(0,"", $res)
    Case $nMsg = $Button4
    Exit
    EndSelect
    WEnd

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

    If ProcessExists("SciTE.exe") Then
    MsgBox(0, "Achtung!", "Bitte schließen Sie das Programm ""SciTE"" bevor sie mit dem Restore fortfahren.")
    EndIf

    [/autoit]
  • Variablen aus Werte erstellen

    • DerSchatten
    • 31. August 2007 um 13:28

    Leider nein. genau das gleiche Phänomen.
    Mal 5, mal 257, mal 260
    Jeh nachdem ob danach auch eine Checkbox aktiviert ist oder davor.

    Was ist das für ein Sch.... ? :(

    Liegts das problem vielleicht am Array?

  • Variablen aus Werte erstellen

    • DerSchatten
    • 31. August 2007 um 13:10

    Tja, leider nicht.
    Hat den Wert 257.

    Was lauft das verkehrt?

  • Variablen aus Werte erstellen

    • DerSchatten
    • 31. August 2007 um 11:36

    Also bei mir kommt folgendes raus:

    AKTIVIERT = 1
    NICHT AKTIVIERT = 4
    NICHT AKTIVIERT MANCHMAL = 260, 264

    Ich kenn mich nimma aus.

  • Variablen aus Werte erstellen

    • DerSchatten
    • 31. August 2007 um 00:18

    Irgendwie werd ich aus dem ganzen nicht schlau.
    Die Ausgabe liefert immer einen anderen Wert.

    Wie prüft man denn nun ob eine checkbox aktiviert ist oder nicht?

  • Variablen aus Werte erstellen

    • DerSchatten
    • 30. August 2007 um 22:31

    Konnte ich auch gerade in Erfahrung bringen.
    Jedoch funkt das ganze trotzdem nicht:

    [autoit]

    If GUICtrlRead ($TreeView[0]) = $GUI_CHECKED Then ...
    If GUICtrlRead ($TreeView[1]) = $GUI_CHECKED Then ...
    If GUICtrlRead ($TreeView[2]) = $GUI_CHECKED Then ...
    If GUICtrlRead ($TreeView[3]) = $GUI_CHECKED Then ...
    If GUICtrlRead ($TreeView[4]) = $GUI_CHECKED Then ...
    ...

    [/autoit]

    Das ganze funktioniert nur, wenn alle Checkboxen vor der zu letzt aktivierten, aktiviert sind.

    Funkt nicht:
    Box 1: x
    Box 2: x
    Box 3: -
    Box 4: x

    Funkt:
    Box 1: x
    Box 2: x
    Box 3: x
    Box 4: x

  • Variablen aus Werte erstellen

    • DerSchatten
    • 30. August 2007 um 22:00

    Hallo nochmal.
    Ich habe dazu jetzt noch ein problem.
    Wenn ich nun den Status der einzelnen Checkboxen abfragen möchte und dementsprechend eine Aktion ausgeführt werden soll, wie gehe ich dann vor?

    Momentan sieht das ganze so aus:

    [autoit]

    If GUICtrlRead ($TreeView[0]) = 1 Then ...
    If GUICtrlRead ($TreeView[1]) = 1 Then ...
    If GUICtrlRead ($TreeView[2]) = 1 Then ...
    If GUICtrlRead ($TreeView[3]) = 1 Then ...
    If GUICtrlRead ($TreeView[4]) = 1 Then ...

    [/autoit]

    Das scheint aber so nicht zu funktionieren.

  • Variablen aus Werte erstellen

    • DerSchatten
    • 30. August 2007 um 16:03

    Super! Pefekt!
    Dankeschön!

  • Variablen aus Werte erstellen

    • DerSchatten
    • 30. August 2007 um 14:54

    Das ist es leider nicht.
    Dann bekomme ich den Fehler: Variable used without being declared.

    Was ja auch logisch klingt da die Variable $TreeView1_ nicht definiert ist.

    peethebee: Kannst du mir ein beispiel geben wie das dann aussehen muß?

  • Variablen aus Werte erstellen

    • DerSchatten
    • 30. August 2007 um 14:41

    Hallo leute.
    habe folgendes Problem.

    Ich möchte gerne in einer Schleife sämtliche Checkboxen aktivieren.
    Das hab ich mir so vorgestellt:

    [autoit]

    Case $nMsg = $Button1
    $a = 0
    While $a <=12
    $Checkbox = "$TreeView1_" & $a
    MsgBox(0, "Ausgabe", $Checkbox)
    GUICtrlSetState($Checkbox, $GUI_CHECKED)
    $a = $a + 1
    WEnd

    [/autoit]

    Jedoch funktioniert das nicht.
    Das zusammensetzen der variable aus Text und Wert passt soweit.
    Wo liegt da der Fehler?

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™