Zwei Einträge in der Registry vergleichen (siehe letzten Post)

  • Hi liebe AutoIt Gemeine,
    ich teste mich jetzt schon seit einer Woche durch AutoIt durch. Learning by doing halt. Nun wollte ich mich heute einem neuen Projekt widmen, aber komme nicht weiter.

    Grob umrissen soll das Programm am Ende können:
    -über einen Button .exe Dateien auswählen können (Abgehakt)
    -einen Programmpfad in ein Feld schreiben (Abgehakt)
    -selbstständig den Programmpfad in die Registry schreiben

    Ein paar Tutorials habe ich schon gewälzt, darum denke ich, dass ich das mit der Registry alleine hinbekomen werde. Das ganze Vorhaben hapert aber schon an der Knopf Sache.
    Die GUI wollte ich im Message-loop Modus schreiben. Den Knopf abfragen mit Switch oder Select ist mir auch bekannt. Nun aber die Frage : Wie erreiche ich, dass der Knopf beim drücken den Explorer öffnet, dort eine beliebe .exe ausgewählt werden kann und der Programmpfad danach in ein von mir erstelltes Feld geschrieben wird. (Hoffe mal das ist nicht zu komplex)

    Das wäre die erste Frage...für den Anfang.
    Gruß
    Weltherrscher

    4 Mal editiert, zuletzt von Weltherrscher (20. Juli 2011 um 16:25)

  • Diese Funktion öffnet den Windows Dialog zum auswählen einer Datei

    [autoit]

    FileOpenDialog

    [/autoit]


    Einen Programmpfad in ein Feld schreiben, da müsstest du ein wenig spezifischer werden... Geht es dir um ein bestimmtes "Feld"? Handelt es sich dabei um ein Input Control? Wenn du einfach etwas an das Control mit dem Tastaturokus senden willst, kannst du den Befehl Send verwenden. Besser geht es mit ControlSend, dafür müssen aber einige Daten des Controls, welche du mit dem "AutoIt Window Info Tool" herrausfinden kannst, bekannt sein.
    In die Registry schreiben kannst du mit dem Befehl

    [autoit]

    RegWrite

    [/autoit]

    schau dir dazu aber bitte die Hilfe an, damit du nicht ausversehen Schaden anrichtest. ;)

    Edit: "Von mir erstelltes Feld"... Also kann ich davon ausgehen, dass es sich um ein von dir erzeugtes AutoIt Control handelt? Wenn ja, dann verwende GUICtrlSetData um den Inhalt des Controls zu verändern.

  • Ja, hat super geklappt. Danke für den Tipp mit dem "AutoIt Window Info Tool". Wusste zwar, dass man Fenster damit betrachten kann, aber nicht die Controls von der GUI.

    Ich lasse den Thread nochmal offen, falls ich noch Fragen zum "RegWrite" Befehl habe.

    Gruß & Danke
    Weltherrscher

    Edit: Kann es sein, dass AutoIt nicht über genügend Rechte verfügt in "HKEY_LOCAL_MACHINE" zu schreiben?
    Mein RegWrite Befehl sieht so aus:

    [autoit]

    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Test", "Test Schlüssel", "REG_SZ", "Hallo dies ist ein Test")

    [/autoit]

    Einmal editiert, zuletzt von Weltherrscher (19. Juli 2011 um 19:14)

  • [autoit]

    #requireadmin

    [/autoit]

    Fordert Windows auf, deinem Script Admin Rechte zu geben.

    Dadurch bekommt das Script keine Adminrechte, sondern damit das Script funktioniert braucht man Adminrechte; dafür ist #requireadmin

    *klugscheiß* :rofl:

  • Klingt wie ne doppelte Absicherug, dass ich nicht in der Registry rumpfuschen darf.

  • Hi,
    naja was heißt doppelte Absicherung, Windows wollte auch mal was für die Sicherheit machen :D


    Zitat von Tutendorf

    Dadurch bekommt das Script keine Adminrechte, sondern damit das Script funktioniert braucht man Adminrechte; dafür ist #requireadmin


    Rischdisch :thumbup: Schande über mich das ich hier was falsch erkläre :D

  • Gibt es denn bei AutoIt die Möglichkeit dort in die Registry zu schreiben?

    Edit: Lag nicht an den Rechten, sondern am Betriebssystem. 64-Bit Betriebssysteme müssen ja mit HKLM64 eingeleitet werden.

    Edit:Edit: Wie kann ich vergleichen ob ein Schlüssel schon vorhanden ist? Mit "StringRegExp" bekomme ich nur eine Fehlermeldung.

    [autoit]

    $Istvorhanden = StringRegExp(RegRead("HKCR64\DesktopBackground\Shell\"), GUICtrlRead(5))

    [/autoit]


    Gruß
    Weltherrscher

    2 Mal editiert, zuletzt von Weltherrscher (20. Juli 2011 um 16:28)