Hilfe mit Umgang der Registry

  • Servus
    also was ich vorhabe ist dass ich in der Registry ein Gerät abfragen will. Sprich Gerät angeschlossen dann passiert dass Gerät entfernt dann passiert jenes.

    Mein Problem ist dass ich nicht weiß wie man dass schreibt.
    Es handelt sich um einen Gamecontroller. Den Registry Eintrag habe ich bereits gefunden (siehe Bild) nur wo ändert sich da was was ich abfragen könnte?

  • Hi,
    du fragst einfach deine Registry mit if nach dem Schlüssel ab, woran du erkennst, das das Gerät aktiv ist.
    Hilfe zu den Befehlen gibt es hier.

    [autoit]


    if
    Else
    Regread

    [/autoit]

    Einfach mal testen, Beispiele sind ja dabei und wenn eine Lösung oder eine Frage auftaucht einfach hier nochmal melden. ;)

    MfG
    Der_Doc

  • Hi du mußt doch eigentlich nix in der Registry ändern.
    Du kannst doch auf die Registry reagieren.
    Ein Schlüssel ist übrigends der Weg zu dem Wert den du auslesen möchtest.

    [autoit]


    $var = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion", "ProgramFilesDir")
    Sclüssel , Value/Wert

    [/autoit]

    Am besten ist du liest den Beitrag Regread mal in der Hilfe nach. Da gibt es auch Beispiele.

    MfG
    Der_Doc

  • ja und wie formuliere ich dass dann mit einer if bedingung? ich muss ja irgendwas erkennen was verändert wird.

  • Grundlagen bei der Programmierung, sind u.a. logisches Denken und, ich wollte es meinem damaligen Dozenten nicht glauben, einfaches Beschreiben was ablaufen soll.

    Er sagte damals, wir sollen unseren Gedankenablauf einfach in kurze, aussagekräftige deutsche Sätze fassen.

    Unterschiede erkennen = Jetzt was anderes wie vorher !

    1. Merke was war
    2. Schleifenbeginn
    3. Hat sich was geändert ?
    4. Wenn ja: Reagiere
    5. Wiederholen bis ? (Endlos ?)

    In Deinem Bespiel würde daraus etwa dies enstehen:

    [autoit]

    $alt = RegRead(...)
    While 1
    If $alt <> RegRead(....) Then Msgbox(0,"","Es hat sich was geändert")
    Wend

    [/autoit]

    Ist aber nur ein Beispiel, wie man einen Programmablauf entwickeln könnte. Damals habe ich den Dozenten für abgedreht gehalten. Nachdem ich nun etliche Programmiersprachen benutzt habe, muss ich sagen: Das Prinzip geht immer, weil es sprachenunabhängig ist.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    • Offizieller Beitrag

    [OT]
    Micha_he:
    Wir hatten irgendwann schonmal darüber geredet, es macht wirklich Sinn (vor allem bei größeren Projekten) sich Struktogramme und Programmablaufpläne zu erstellen.
    Zum Einen sind diese völlig unabhängig von der verwendeten Programmiersprache und zum Anderen sind Logikfehler leichter zu erkennen.
    [/OT]

  • also wenn ich das so mache wie du es mir schreibst dann kommt diese fehlermeldung.

  • hier mal mein code den ich geändert habe:

    Code
    $path = RegRead ('HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\{F12D3CF8-B11D-457E-8641-BE2AF2D6D204}\BTHIDJOYSTK\1&21CCD16&0&BTHIDJOYSTK_00')
    While 1
    If $path <> RegRead ('HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\{F12D3CF8-B11D-457E-8641-BE2AF2D6D204}\BTHIDJOYSTK\1&21CCD16&0&BTHIDJOYSTK_00') Then run ("C:\Programme\GlovePIE029\GlovePIE.exe")
    wend
  • habs gemerkt aber woher weiß ich in welchem teil sich was verändert. in dem ordner sind folgende dateien:

  • Was sich ändert, muss der Programmierer schon wissen. Wenn Du ein Script erstellst bist kein Anwender mehr, sondern der Entwickler.

    Wenn Du wissen willst, was sich in der Registry ändert wenn Du eine Software-/Hardwareaktion auslöst, haben sich wie schon des öfteren hier im Forum erwähnt, Tools wie RegMon und RegShot als hilfreich erwiesen.

    Änderungen ließen sich auch mit AutoIt ermitteln (RegEnumKey, RegEnumValue), was aber in Deinem Fall den Aufwand sprengt und neue Fragen deinerseits aufwerfen würde.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • also mit regmon komm ich irgendwie nicht klar da wird so wie es aussieht meine hardware gar nicht aufgeführt. regshot is ja simpler aber da hab ichs so gemacht einmal erster schuß ohne dass gerät angeschlossen. 2 ter schuss gerät angeschlossen.
    keine veränderung im vergleich

    Einmal editiert, zuletzt von yamaharacer (4. April 2009 um 13:39)

  • Ich weiß nicht, ob ich Dich richtig verstanden habe bzw. das Problem, aber das sollte weiter helfen erst einmal RegRead & RegWrite zu verstehen.

    Spoiler anzeigen
    [autoit]


    ; schreiben eines Registryeintrag
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion", "Test", "REG_SZ", "alt")

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

    ; auslesen eines Registryeintrag
    $var_alt = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion", "Test")

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

    ; Ausgabe des Registryeintrag in eine MsgBox
    MsgBox(0,"Beispiel", $var_alt)

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

    ; schreiben eines Registryeintrag in eine Textdatei (öffen, schreiben, schließen)
    $file1 = FileOpen("test_als.txt", 1)

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

    ; Prüfen, ob Datei im Schreibmodus geöffnet ist
    If $file1 = -1 Then
    MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
    Exit
    EndIf

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

    FileWrite($file1, $var_alt)
    FileClose($file1)

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

    ; Hier ändere ich den oben eingetragenen Registryeintrag von "alt" auf "neu"
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion", "Test", "REG_SZ", "neu")

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

    ; auslesen des geänderten Registryeintrag
    $var_neu = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion", "Test")

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

    ; schreibt den geänderten Registryeintrag in eine neue Textdatei (öffen, schreiben, schließen)
    MsgBox(0,"Beispiel", $var_neu)
    $file2 = FileOpen("test_neu.txt", 1)

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

    ; Prüfen, ob Datei im Schreibmodus geöffnet ist
    If $file2 = -1 Then
    MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
    Exit
    EndIf

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

    FileWrite($file2, $var_neu)
    FileClose($file2)

    [/autoit]


    Danach könntest Du die beiden Dateien test_alt.txt (before) und test_neu.txt (after) vergleichen.
    Das ist jetzt ein Beispiel für einen Registryeintrag. Das ganze kannst Du aber auch mit zwei oder mehr Einträgen machen.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • ch will ehrlich gesagt nur wenn ein gerät angeschlossen wird dass ein programm geöffnet wird und wenn das gerät entfernt ist dass sich das programm wieder schließt mehr nicht.

    wie gesagt es handelt sich um ein bluetooth gerät.

  • Eigentlich sollte regshot das hinbekommen.

    Hast du die Schritte wirklich in der Reihenfolge ausgeführt:
    1. Gerät entfernen
    2. Regshot: 1. Schuss
    3. Gerät anschließen (eventuell etwas warten)
    4. Regshot: 2. Schuss
    5. Regshot: Vergleichen

    Hatte das so mal mit einem USB-Stick versucht und hat einwandfrei funktioniert.

  • Eigentlich sollte regshot das hinbekommen.

    Hast du die Schritte wirklich in der Reihenfolge ausgeführt:
    1. Gerät entfernen
    2. Regshot: 1. Schuss
    3. Gerät anschließen (eventuell etwas warten)
    4. Regshot: 2. Schuss
    5. Regshot: Vergleichen

    Hatte das so mal mit einem USB-Stick versucht und hat einwandfrei funktioniert.

    ja hab ich gemacht da gabs keine veränderung. also auch beim entfernen keine änderung.

    Einmal editiert, zuletzt von yamaharacer (4. April 2009 um 16:51)

  • Wo wird in der Registry was verändert, wenn man den USB-Stick angeschlossen hat???

    Wenn diese Frage gelöst ist, habe ich eine Idee für ein Script.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • es geht doch gar nicht um einen usb stick der bluetooth stick ist immer am pc es geht um das bluetooth device dass mit dem pc verbinden will.
    aber vom prinzip sollte es das gleiche sein.

  • Hm, achso ist das.
    Ich fürchte es ist vom Prinzip nicht dasselbe. (Sonst müsste es Änderungen in der Registry geben).
    Wird das Gerät denn im Gerätemanager angezeigt oder nur in der Software für den Bluetooth Stick?

    Wenns nur von der Software "erkannt" wird, welche Software ist es?

    Edit:
    Ist es denn das Einzigste Gerät was du über Bluetooth verbindest? Dann wüsst ich vllt einen Workaround