| | Quelltexte/ Codesnippets |  |  |  |  |  |  |  |  Alfred
 Wagner
 | | hallo profaner 
 ich möchte einen binärwert aus der registry auslesen und in einen checkbox als abgehakt ,oder auch nicht anzeigen (versuch ich schon seit einigen jahren)
 wäre nett wenn einer eine idee dazu hätte
 
 grüsse
 alfred
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  | | Einen Binärwert oder ein Long? Ein Binärwert wäre das (Windows98):
 KompilierenMarkierenSeparieren
 Beispiel zu api_RegQueryValueExA,ADVAPI32
Declare Handle#,Fehler&,Key#,Name#,Wert#,Size#,Type#,Zaehler%,Binaer$
Def @Regopenkeyex(5) !ADVAPI32,RegOpenKeyExA
Def @Regqueryvalueex(6) !ADVAPI32,RegQueryValueExA
Def @Regclosekey(1) !ADVAPI32,RegCloseKey
Windowstyle 31
Windowtitle Aus Registry Binärwert auslesen
Window 0,0-640,440
Dim Key#,513
Dim Handle#,4
Dim Name#,250
Dim Size#,4
Dim Wert#,2000
Dim Type#,4
String Key#,0=SoftwareMicrosoftWindowsCurrentVersion zu öffnender Schlüssel
 $80000002=HKEY_LOCAL_MACHINE
 $80000001=HKEY_CURRENT_USER
Let Fehler&=@Regopenkeyex($80000002,Key#,0,$1,Handle#)
Print Fehlercode beim Öffenen des Schlüssels: +@str$(Fehler&)
If Fehler&=0
    String Name#,0=FirstInstallDateTime auszulesender Wert
    Long Size#,0=2000
    Let Fehler&=@Regqueryvalueex(@Long(Handle#,0),Name#,0,Type#,Wert#,Size#)
    Print Fehlercode beim Auslesen des Schlüssels: +@str$(Fehler&)
    Print
    Print Ausgelesener Wert:
    Clear Zaehler%,Binaer$
    While Zaehler%<@Long(Size#,0)
        LET Binaer$=Binaer$+@Hex$(@Byte(Wert#,Zaehler%))+
        Inc Zaehler%
    wend
    Print Binaer$
    Print Typ des Schlüssels: +@str$(@Long(Type#,0))
    Print Länge des Wertes: +@str$(@Long(Size#,0))+ Bytes
    Print
    @Regclosekey(@Long(Handle#,0))
Endif
Dispose Type#
Dispose Wert#
Dispose Key#
Dispose Handle#
Dispose Name#
Dispose Size#
While 1
    Waitinput
Wend
  | 
 
  |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  | | Wenn du aber ein Doubleword (oder auch Long) meinst, geht das so: KompilierenMarkierenSeparieren
 Beispiel zu api_RegQueryValueExA,ADVAPI32
Declare Handle#,Fehler&,Key#,Name#,Wert#,Size#,Type#,Zaehler%,Binaer$,Box&
Def @Regopenkeyex(5) !ADVAPI32,RegOpenKeyExA
Def @Regqueryvalueex(6) !ADVAPI32,RegQueryValueExA
Def @Regclosekey(1) !ADVAPI32,RegCloseKey
Windowstyle 31
Windowtitle Aus Registry Binärwert auslesen
Window 0,0-640,440
LET BOX&=@CreateCheckbox(%HWND,Screensaver nicht einstellbar:,10,200,300,30)
Dim Key#,513
Dim Handle#,4
Dim Name#,250
Dim Size#,4
Dim Wert#,4
Dim Type#,4
String Key#,0=SoftwareMicrosoftWindowsCurrentVersionPoliciesSystem zu öffnender Schlüssel
 $80000002=HKEY_LOCAL_MACHINE
 $80000001=HKEY_CURRENT_USER
Let Fehler&=@Regopenkeyex($80000001,Key#,0,$1,Handle#)
Print Fehlercode beim Öffenen des Schlüssels: +@str$(Fehler&)
Clear Wert#
If Fehler&=0
    String Name#,0=NoDispScrSavPage auszulesender Wert
    Long Size#,0=4
    Let Fehler&=@Regqueryvalueex(@Long(Handle#,0),Name#,0,Type#,Wert#,Size#)
    Print Fehlercode beim Auslesen des Schlüssels: +@str$(Fehler&)
    Print
    Print Ausgelesener Wert: +@str$(@long(Wert#,0))
    Print Typ des Schlüssels: +@str$(@Long(Type#,0))
    Print Länge des Wertes: +@str$(@Long(Size#,0))+ Bytes
    Print
    @Regclosekey(@Long(Handle#,0))
Endif
SetCheck Box&,@Long(Wert#,0)
Dispose Type#
Dispose Wert#
Dispose Key#
Dispose Handle#
Dispose Name#
Dispose Size#
While 1
    Waitinput
Wend
Was war gesucht?
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  Alfred
 Wagner
 | | hallo Andreas danke für deine Hilfe
 
 der zweite code war es.
 
 hab ihn aber ein wenig abändern müssen weil das häkchen auf der checkbox beim wert null eingeschaltet sein soll.
 
 hab zuerst den wert in eine test.ini geschrieben,und danach ausgelesen.
 KompilierenMarkierenSeparieren
 Beispiel zu api_RegQueryValueExA,ADVAPI32
Declare Handle#,Fehler&,Key#,Name#,Wert#,Size#,Type#,Zaehler%,Binaer$,Box&
Def @Regopenkeyex(5) !ADVAPI32,RegOpenKeyExA
Def @Regqueryvalueex(6) !ADVAPI32,RegQueryValueExA
Def @Regclosekey(1) !ADVAPI32,RegCloseKey
@Set(ErrorLevel, 0)
Windowstyle 31
Windowtitle Aus Registry Binärwert auslesen
Window 0,0-640,440
Def Home(0) Translate$(Upper$(Par$(0)),Upper$(FindFirst$(Par$(0))),)
Declare Inifile$
LET home$ = @Par$(0)
IniFile$ = Home()+ Test.ini
LET BOX&=@CreateCheckbox(%HWND,Eindeutige Player - ID  NICHT  an Inhaltsanbieter senden,10,200,450,15)
Dim Key#,513
Dim Handle#,4
Dim Name#,250
Dim Size#,4
Dim Wert#,4
Dim Type#,4
String Key#,0=SoftwareMicrosoftMediaPlayerPreferenceszu öffnender Schlüssel
 $80000002=HKEY_LOCAL_MACHINE
 $80000001=HKEY_CURRENT_USER
Let Fehler&=@Regopenkeyex($80000001,Key#,1,$F003F,Handle#)
Print Fehlercode beim Öffenen des Schlüssels: +@str$(Fehler&)
Clear Wert#
String Name#,0=SendUserGUIDauszulesender Wert
Long Size#,0=4
Let Fehler&=@Regqueryvalueex(@Long(Handle#,0),Name#,0,Type#,Wert#,Size#)
Print Fehlercode beim Auslesen des Schlüssels: +@str$(Fehler&)
Print
Print Ausgelesener Wert: +@str$(@long(Wert#,0))
WriteIni IniFile$,SendUserGUID,Wert=+@str$(@long(Wert#,0))Wert in die Test.ini schreiben
Print Typ des Schlüssels: +@str$(@Long(Type#,0))
Print Länge des Wertes: +@str$(@Long(Size#,0))+ Bytes
Print
@Regclosekey(@Long(Handle#,0))
Declare Wert$Falls Wert nicht vorhanden
Wert$=ReadIni$(HKEY_1,SoftwareMicrosoftMediaPlayerPreferences,SendUserGUID)
If %ERROR
    WriteIni IniFile$,SendUserGUID,Wert=nicht vorhanden
Endif
Wert von der Test.INI auslesen und Checkbox bei einem Binärwert von null abhaken
If Readini$(IniFile$,SendUserGUID,Wert)=1
    Setcheck BOX&,0
    Print Wert ist 1
Elseif Readini$(IniFile$,SendUserGUID,Wert)=0
    Setcheck BOX&,1
    Print Wert ist 0
Elseif Readini$(IniFile$,SendUserGUID,Wert)=nicht vorhanden
    Setcheck BOX&,1
    Print Wert in der Registry nicht vorhanden
Endif
Dispose Type#
Dispose Wert#
Dispose Key#
Dispose Handle#
Dispose Name#
Dispose Size#
While 1
    Waitinput
Wend
danke nochmal für deine hilfe
 
 grüsse
 
 Alfred mit Familie
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 | 
 Zum Quelltext| Themenoptionen | 7.812 Betrachtungen | 
 ThemeninformationenDieses Thema hat 2 Teilnehmer: | 
 
 |