Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Registry & RegSetValueEx del cacchio!

oki vi illustro il problemino, devo associare i file di tipo *.rnl ad una
mia applicazione... teoricamente "No problem!"
devo solo creare tre chiavi:
HKEY_CLASSES_ROOT\.rnl
(valore: "rnlfile")
HKEY_CLASSES_ROOT\rnlfile
(Valore: "mia applicazione")
HKEY_CLASSES_ROOT\rnlfile\DefaultIcon
(Valore:  "
percorso.app
\mia applicazione.EXE,0"
ma fermiamoci alla prima chiave: (Allego un po di codice)
[CUT HERE]-----------------------------------------------------------
Const REG_DWORD = 2
Const HKEY_CLASSES_ROOT = &H80000000
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long)
As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias
"RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As
Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias
"RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal
Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long)
As Long
Sub CreaString(hKey As Long, strPath As String, strValue As String, strData
As String)
Dim Ret
'Creo una chiave
RegCreateKey hKey, strPath, Ret
'La salvo
RegSetValueEx Ret, strValue, 0, REG_DWORD, strData, Len(strData)
'E la chiudo
RegCloseKey Ret
End Sub
Private Sub Cmd1_Click()
CreaString HKEY_CLASSES_ROOT, ".rnl", "(Predefinito)", "rnlfile"
End Sub
[END SOURCE]-------------------------------------------------------
Cosa accade?
mi ritrovo con una chiave:
HKEY_CLASSES_ROOT\.rnl
E ho 2 Valori:
(Predefinito) (Valore non impostato)
(Predefinito) "x獣"
**************************************************
Dove m1nch1a sbaglio?!?!?
-- Luvme2times
"Love me two times babe | I'm going awayyyy"
J.D.M

 (Predefinito) "x b"
Mi correggo ho riprovato altre 3 volte e il secondo "(Predefinito)" è
cambiato tutte 3 le volte in modo randomico!!!
Magie di mamma microsoft ^__^
Cmq. il problema non è risolto, quindi la richiesta di aiuto è sempre
valida!
-- Luvme2times
"Love me two times babe | I'm going awayyyy"
J.D.M.


[snip]
Questo e' il giro giusto:
'// costante per i valori stringa (DWORD e' binario !)
Private Const REG_SZ = 1
Sub CreaString(hKey As Long, strPath As String, strValue As String, strData As String)
    '// diamo un nome piu' chiaro alla variabile e le assegniamo ul tipo
    Dim phKey As Long    
    'Creo una chiave
    RegCreateKey hKey, strPath, phKey
    'La salvo
   '// questo e' cambiato: passa strValue contenente una stringa vuota
   '// e passa strData _per valore_ , perche' per vb le stringhe sono gia' puntatori
   RegSetValueEx phKey, strValue, 0, REG_SZ, ByVal strData, Len(strData)
    'E la chiudo
    RegCloseKey phKey
End Sub
Public Sub Test()
       '// passa puntatore nullo al posto di "(Predefinito)":
       '// hai pensato che windows non e' solo in italiano ?
       CreaString HKEY_CLASSES_ROOT, ".rnl", vbNullString, "rnlfile"
End Sub
ciao, hal

        '// hai pensato che windows non e' solo in italiano ?
hehhehe
"(Predefinito)" è stata la mia ultima prova (Disperata) prima di inviare il
post al NG, ho provato anche Default e mi veniva fuori il nome del valore
"0" e un altro paio di cosette così oscene che mi vergogno a scriverle ^__^
Cmq. A-RI-TNX
-- Luvme2times
"Love me two times babe | I'm going awayyyy"
J.D.M.