Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [VB6] - Registro chiavi scritte in binario

    ho questa porzione di codice che vedete...

    Modulo1.bas


    codice:
    Global Const REG_RESOURCE_LIST = &H8
    Global Const REG_RESOURCE_REQUIREMENTS_LIST = &HA
    Global Const REG_SZ = &H1
    
    Public Const SYNCHRONIZE = &H100000
    Public Const READ_CONTROL = &H20000
    Public Const STANDARD_RIGHTS_READ = (READ_CONTROL)
    Public Const KEY_QUERY_VALUE = &H1
    Public Const KEY_ENUMERATE_SUB_KEYS = &H8
    Public Const KEY_NOTIFY = &H10
    Public Const KEY_WRITE = &H20006
    Public Const KEY_ALL_ACCESS = &H2003F
    Public Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
    
    Public Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
    Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
    Public Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
    Public Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As Any, phkResult As Long, lpdwDisposition As Long) As Long
    Public Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal samDesired As Long, phkResult As Long) As Long
    Public Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
    Public 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
    Public Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, ByVal lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As Any) As Long
    Public Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
    Public Declare Function RegNotifyChangeKeyValue Lib "advapi32.dll" (ByVal hKey As Long, ByVal bWatchSubtree As Boolean, ByVal dwNotifyFilter As Long, ByVal hEvent As Long, ByVal fAsynchronous As Boolean) As Long
    Public Declare Function RegRestoreKey Lib "advapi32.dll" Alias "RegRestoreKeyA" (ByVal hKey As Long, ByVal lpFile As String, ByVal dwFlags As Long) As Long  ' Main function
    Public Declare Function RegSaveKey Lib "advapi32.dll" Alias "RegSaveKeyA" (ByVal hKey As Long, ByVal lpFile As String, lpSecurityAttributes As Any) As Long
    Button1_onClick
    codice:
    Dim rc, KeyRoot, KeyName, hKey, KeyDesc, tmpVal, KeyValSize, keyval
        KeyRoot = HKEY_LOCAL_MACHINE
        KeyName = " SYSTEM\CurrentControlSet\Control\Print\E
    nvironments\Windows NT x86\Drivers\Version-3\HP Color LaserJet 5/5M PS"
        KeyDesc = "DriverVersion"
        tmpVal = String$(8, 0)
        KeyValSize = 8 'l'ho impostato a 8 perchè è la lunghezza reale della voce di registro
        rc = RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey)
        MsgBox rc
            Dim lResult As Long
            lResult = RegQueryValueEx(hKey, _
                            KeyDesc, _
                            0, _
                            REG_BINARY, _
                            tmpVal, _
                            KeyValSize)
                            
        If (Asc(Mid(tmpVal, KeyValSize, 1)) = 0) Then
            tmpVal = Left(tmpVal, KeyValSize - 1)
        Else
            tmpVal = Left(tmpVal, KeyValSize)
        End If
        MsgBox tmpVal
    il valore della chiave di registro sono i seguenti 8 byte:
    00, C0, 4B, 7D, 0F, 4C, BF, 01

    se provo ad eseguire l'applicazione mi da il seguente errore:
    Errore di Runtime 458
    la variabile utilizza un tipo di automazione non supprtato in visualbasic

    e la variabile incriminata è tmpVal
    sapreste spiegarmi il perchè?

    Grazie
    Ciao


    __________________
    ----------------------------
    Programmare è tuttooooooooo
    ----------------------------
    *** Rachele TI AMO DA MORIRE!!! ***

  2. #2
    Utente di HTML.it L'avatar di junx
    Registrato dal
    May 2004
    Messaggi
    322
    Devi dichiarare tmpVal come String, e non come Variant.

    Ciao.

  3. #3
    Effettivamente mettendo tmpVar come String non da errore il programma ma bensì Windows con il fatidico errore di protezione generale...
    perchè?
    *** Rachele TI AMO DA MORIRE!!! ***

  4. #4
    Utente di HTML.it L'avatar di junx
    Registrato dal
    May 2004
    Messaggi
    322
    prova a compilare il progetto e vedi se ti da lo stesso errore.

  5. #5
    decisamente SI

    però ho modificato qualcosa (non so cosa) e invece di andare subito in errore di protezione ora in debug mi da memoria esaurita quando leggo la chiave
    *** Rachele TI AMO DA MORIRE!!! ***

  6. #6
    Fotonicooooooooooooooo

    ho trovato che se fai:
    codice:
    Type Prova
        prova2 as long ' l'ho messo a caso il tipo ma con Long funziona
    end type
    e poi la tmpvar la metto come tipo Prova
    allora non da nessun tipo di errore....
    simpatica la cosa
    *** Rachele TI AMO DA MORIRE!!! ***

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.