Newsgroup: it.comp.lang.visual-basic
Titolo: Salvare impostazioni programma

Quali sono i metodi x salvare le impostazioni di un programma?
Grazie
--
Cristian -=EvErL@StiNg=-
----------------------
Visit my site and my MP3 list at 
http://unclecristian.cjb.net

Cerca su internet degli OCX che lo fanno.
Memorizzano automaticamente l'ultimo resize della finestra della form, se č
massimizzata e cose simili.
Era questo che ti serviva?
Ciao



...


...

... un ocx per fare 'ste c....e č una vergogna!!!
;)
Ciao Marco

Ok, ho scaricato il BAS contenente le functions per trovare le dir di
default (bellissimo e utilissimo per i principianti come me! :)))
Ho, però, trovato una function:
Public Function IsAppInstalled(ByVal AppName As String) As Boolean
'restituisce True se l'applicazione indicata da AppName è installata
nella macchina
 
    'costante del valore per ricerca applicazioni installate
    Const APP_NAME_VALUE = "DisplayName"
 
    Dim hkey As Long, numSubkeys As Long, maxLenSubkey As Long
    Dim ft As FILETIME
    Dim i As Long
    Dim result As Long
 
    'apro la chiave del registry
    result = RegOpenKeyEx(HKEY_LOCAL_MACHINE, UninstKey, 0, KEY_READ,
hkey)
    GoSub eval
    'quante sottochiavi?
    With ft
        .dwHighDateTime = 0
        .dwLowDateTime = 0
    End With
    result = RegQueryInfoKey(hkey, vbNullString, 0, 0, numSubkeys,
maxLenSubkey, 0, 0, 0, 0, 0, ft)
    GoSub eval
 
    'cerco in tutte le sottochiavi
    maxLenSubkey = maxLenSubkey + 1 'per includere il carattere null
 
    Dim hSubKeyName As String
    Dim lenKey As Long
    Dim hSubKey As Long
 
    Dim FoundAppName As String
    Dim lenAppName As Long
 
    Dim typ As Long
 
    For i = 0 To numSubkeys - 1
        hSubKey = 0 'indica sottochiave non aperta; serve alla trap
per sapere se chiudere
        lenKey = maxLenSubkey
        hSubKeyName = String(lenKey, 0)
        result = RegEnumKeyEx(hkey, i, hSubKeyName, lenKey, 0,
vbNullString, 0, ft)
        GoSub eval
        hSubKeyName = Left(hSubKeyName, lenKey)
        'apro la sottochiave
        result = RegOpenKeyEx(hkey, hSubKeyName, 0, KEY_QUERY_VALUE,
hSubKey)
        GoSub eval
        'cerco la stringa dell'applicazione:
        lenAppName = 0
        FoundAppName = vbNullString
        '..ne determino la lunghezza...
        result = RegQueryValueEx(hSubKey, APP_NAME_VALUE, 0, typ,
FoundAppName, lenAppName)
        If typ = REG_SZ Then '(DEVE essere una stringa, alrimenti
salto questo passaggio)
            FoundAppName = String(lenAppName, 0)
            '...e la leggo:
            result = RegQueryValueEx(hSubKey, APP_NAME_VALUE, 0, typ,
FoundAppName, lenAppName)
            GoSub eval
            FoundAppName = Left(FoundAppName, lenAppName - 1) 'qui
DEVO togliere il chr(0) finale
            'chiudo la sottochiave
            result = RegCloseKey(hSubKey)
            'vedo se la stringa corrisponde all'app.
            If UCase(FoundAppName) = UCase(AppName) Then Exit For
        Else
            'chiudo la sottochiave
            result = RegCloseKey(hSubKey)
        End If
    Next i
    'trovata?
    IsAppInstalled = (i < numSubkeys)
 
    'chiudo la chiave del registro
    result = RegCloseKey(hkey)
 
    Exit Function
'***************************************************************
eval:
    If result = ERROR_SUCCESS Then
        'va avanti...
        Return
    Else
        '...altrimenti...
        IsAppInstalled = False
        '...chiude le chiavi aperte...
        If hSubKey <> 0 Then result = RegCloseKey(hSubKey)
        result = RegCloseKey(hkey) '...sicuramente aperta...
        '...ed esce
    End If
End Function
Ora: come faccio per sapere se è installato WinZip utilizzando questa
function? Cosa devo mettere al posto di AppName? "leggendo il codice,
intuisco che basta mettere WinZip visto che mi sembra che si basi
sulla ricerca di AppName)
Inoltre, prima di provare questa function, vorrei avere la conferma
che non scombussola il registro (mi scuso con l'autore per questa mia
insicurezza, ma siccome non so bene cosa fa, e non essendo esperto, ma
sapendo che il registro di sistema è una cosaa delicata, ho un po' di
timore......).
Grazie 1000
ByeZ!
Alkondor
Togliere NOSPAM per rispondere in e-mail

Nel Form_Load
    Me.Left = GetSetting(App.Title, "Settings", "MainLeft", 1000)
    Me.Top = GetSetting(App.Title, "Settings", "MainTop", 1000)
    Me.Width = GetSetting(App.Title, "Settings", "MainWidth", 6500)
    Me.Height = GetSetting(App.Title, "Settings", "MainHeight", 6500)
Nel Form_UnLoad
        SaveSetting App.Title, "Settings", "MainLeft", Me.Left
        SaveSetting App.Title, "Settings", "MainTop", Me.Top
        SaveSetting App.Title, "Settings", "MainWidth", Me.Width
        SaveSetting App.Title, "Settings", "MainHeight", Me.Height
Ciao.
Alfredo.