webForumDet fria alternativet

Skriva och läsa ifrån registret

.NET

16 svar · 321 visningar · startad av saw

Medlem sedan mars 20011 880 inlägg
Frågan#1

Jag försöker mig på att skriva och hämta värden ur registret.
I första läget, så är det en checkbox, som sen skall användas om man skall spara till registret.
Så här försöker jag:
Spara till registret

Sub SparaTillRegistret() 
Dim Beskrivning As String, Objekt As String, Varde As Long 
   AppNamn = App.ProductName
   Beskrivning = "Spara värde" 
   Objekt = "Chekbox" 
   Varde = Form1.Check1.Value 
   SaveSetting AppNamn, Beskrivning, Objekt, Varde 
End Sub

Och sedan hämta värdena:
[kod]
Sub HamtaIfranRegistret()
Dim Beskrivning As String, Objekt As String, Varde As Long, hamta As String

Varde = GetSetting(appname:=AppNamn, section:="Beskrivning", Key:="Objekt", Default:=Varde)
If Varde = 1 Then
Form1.Check1.Value = Checked
End If
End Sub
[kod]

Det här går inget vidare, när jag söker i registret, så finns det ingenting där, följaktningen så får jag inga värden därifrån heller.
Jag har också för mig, att skicka jag in ett värde via en variabel, då skall jag inte ha några dubbelfnuttar runt, annars skall man.
Tar jag bort fnuttarna (när jag skall hämta värdet) det får jag ett error. :l
Vad gör jag för fel??
:r

Medlem sedan maj 2003924 inlägg
#2
denna  för att läsa
Varde = GetSetting("AppName", "Beskrivning", "Object", "Värde om inget finns")

denna för att skriva

SaveSetting "ApName", "Beskrivning", "Object", Varde
Medlem sedan maj 2003924 inlägg
#3
Sub HamtaIfranRegistret() 
Dim Beskrivning As String, Objekt As String, Varde As Long, hamta As String 

   AppNamn = App.ProductName
   Beskrivning = "Spara värde" 
   Objekt = "Chekbox" 
Varde = GetSetting("AppName", "Beskrivning", "Objekt", "0")

If Varde = 1 Then 
Form1.Check1.Value = Checked 
End If 
End Sub
Medlem sedan maj 2003924 inlägg
#4

testa så. borde funka

Medlem sedan maj 2003924 inlägg
#5
Sub HamtaIfranRegistret()
Dim Beskrivning As String, Objekt As String, Varde As Long, AppNamn As String

   AppNamn = App.ProductName
   Beskrivning = "Spara värde"
   Objekt = "Chekbox"
Varde = GetSetting(AppName, Beskrivning, Objekt, "0")

If Varde = 1 Then
Form1.Check1.Value = Checked
End If
End Sub

så ska det nog vara

Medlem sedan maj 2003924 inlägg
#6

oj fel igen AppName ska ju självklart vara AppNamn

Medlem sedan mars 20011 880 inlägg
#7

Tack PsyDonia för ditt jobb, och nu känns det väll otacksamt för dig men....
Jag hittade en basmodul på nätet som hjälper till ganska så bra.
Ung så här är det.

SaveStringSetting(ByVal sAppName As String, _
                             ByVal sSection As String, _
                             ByVal sKey As String, _
                             ByVal sSetting As String)

Det innebär att jag sparar så här:

Dim SparaTillRegistret As String, checker As String
    checker = Form1.Check1.Value
    SaveStringSetting AppNamn, "Spara inställningarna", "Spara", checker

När jag sen letar i registret, så snyggt och prydligt står det:
HKEY_LOCAL_MASHINE\SOFTWHERE\MultiLanguage\Spara Inställningarna.
Där finns då en nyckel som heter Spara och har (värde)data 1.
Så långt så är det helt kanon.
Men nu kommer det här med att hämta informationen.

Public Function GetStringSetting(ByVal sAppName As String, _
                                 ByVal sSection As String, _
                                 ByVal sKey As String, _
                                 Optional ByVal sDefault As String) As String

Det här lyckades.

      spara = GetStringSetting(AppNamn, "Spara inställningarna", "spara", "checker")
      If spara <> 0 Then
        Check1.Value = vbChecked
      Else
        Check1.Value = vbUnchecked
      End If

Nu är det bara resten kvar, jag iallafall för din hjälp.

Medlem sedan mars 20011 880 inlägg
#8

Skulle vilja ha möjlighetatt ta bort ifrån registret också.

TaBort = DeleteSetting(AppNamn) fungerar inte, några tips?

Medlem sedan maj 2003924 inlägg
#9

hmm är inte världsbäst på registret.
vet inte riktigt.
ska fundera hur man del

Medlem sedan maj 2003924 inlägg
Medlem sedan maj 2003924 inlägg
#11

här en super bra mod för registret.


Public Sub ReadWriteDeleteRegistry(RegistryKey As String, RegistryInformation As String, ReadWriteDelete As Integer)
    'Error Handling In case something goes w
    '     rong
    On Error GoTo ErrHandler
    'Sets the Variables to be used
    Dim WSHShell, RegTemp
    'Starts the Wscript Object
    Set WSHShell = CreateObject("WScript.Shell")
    
    'Checks for Read Property (Read = 1)

    If ReadWriteDelete = 1 Then
        'Reads the specified key
        RegTemp = WSHShell.RegRead(RegistryKey)
        MsgBox RegTemp
    End If
    
    'Checks for Write Property (Write = 2)

    If ReadWriteDelete = 2 Then
        'Writes to the registry
        WSHShell.RegWrite RegistryKey, RegistryInformation
        MsgBox Chr(34) & RegistryKey & "\" & RegistryInformation & Chr(34) & " has been written to the registry.", vbInformation, "Success"
    End If
    
    'Checks for Delete Property (Delete = 3)
    '     

    If ReadWriteDelete = 3 Then
        Dim MsgDeleteKey As String
        'Makes sure you really do want to delete
        '     this key
        MsgDeleteKey = MsgBox("You are about to delete: " & RegistryKey & " From Your Registry, Do you wish to continue?", vbYesNo Or vbQuestion, "Warning!")
    End If
    
    'Checks for which buttin the user presse
    '     d (Yes Or No)

    Select Case MsgDeleteKey
        
        'If Yes, Delete Key
        Case vbYes
        WSHShell.RegDelete (RegistryKey)
        MsgBox RegistryKey & " Has Been Deleted!", vbInformation, "Success"
        Err
        
        'If No, Exit the Sub
        Case vbNo
        Exit Sub
    End Select
'Error Handler Label
ErrHandler:
'Checks for specific error(s)
'This one is for a non-existant Key

If Err.Number = (-2147024894) Then
    MsgBox "The Registry Key (" & RegistryKey & ") doesn't exist.", vbCritical, "Error - Key Not Found"
End If

'This one is for an Invalid Key

If Err.Number = (-2147024893) Then
    MsgBox "The Key (" & RegistryKey & ") is invalid.", vbCritical, "Error - Invalid Key"
End If
End Sub
Medlem sedan maj 2003924 inlägg
#12

hur den används.

'Read = 1
'Write = 2
'Delete = 3

'Reads Key
'Call ReadWriteDeleteRegistry("HKEY_CURR
'     ENT_USER\Software\TestKey", "", 1)
'Writes Key
'Call ReadWriteDeleteRegistry("HKEY_CURR
'     ENT_USER\Software\TestKey", "Stuff to wr
'     ite", 2)
'Deletes Key
'Call ReadWriteDeleteRegistry("HKEY_CURR
'     ENT_USER\Software\TestKey", "", 3)
Medlem sedan mars 20011 880 inlägg
#13

Jo den såg ju kanon ut, men åker på ett error

Call ReadWriteDeleteRegistry("HKEY_LOCAL_MACHINE\Software\MultiLanguage\Senast öppnade webbplats", "", 3)

Error kan inte ta bort MultiLanguage Senast öppnade webbplats

Tillbaka till ruta 1?

Medlem sedan maj 2003924 inlägg
#14

e du säker på att "Senaste åppnade webbplats" finns.

Medlem sedan mars 20011 880 inlägg
#15

Japp, jag kan se den via regedit. Allting sparas fint, läses fint, men ta bort går inte.

Medlem sedan okt. 20023 030 inlägg
#16

Lägg till bifogad klassmodul och använd koden

Dim Registry As New cRegistry

    Registry.ClassKey = HKEY_LOCAL_MACHINE
    Registry.SectionKey = "Software\MultiLanguage"
    Registry.ValueKey = "Senast öppnade webbplats"

    If Registry.DeleteValue Then
        ' Borttagningen lyckades
    Else
        ' Borttagningen misslyckades
    End If

om strängen heter "Senast öppnade webbplats". Om det är en nyckel (en mapp alltså), använd följande

Dim Registry As New cRegistry

    Registry.ClassKey = HKEY_LOCAL_MACHINE
    Registry.SectionKey = "Software\MultiLanguage\Senast öppnade webbplats"

    If Registry.DeleteKey Then
        ' Borttagningen lyckades
    Else
        ' Borttagningen misslyckades
    End If
Medlem sedan mars 20011 880 inlägg
#17

Tack min vän skall kolla detta.

269 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
136 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
132 ms — ändringar (db)