Odczyt z rejestru...

0

Dzień dobry... Chciałbym odczytać z rejestru string ale jakoś tak
nic mi z tego nie wychodzi... funkcja wygląda tak:

LPTSTR ReadRegValue(HKEY hKey, LPCTSTR lpSubKey, LPCTSTR pValueName) {
   PHKEY phkResult;
   LPDWORD lpcbData;
   LPTSTR lpValueName;
   RegOpenKeyEx(hKey, lpSubKey, 0, KEY_ALL_ACCESS, phkResult);
   RegQueryValueEx(phkResult, pValueName, NULL, NULL, lpValueName, lpcbData);
   RegCloseKey(phkResult);
   return lpValueName;
}

Co to jest: LPCTSTR, LPTSTR, LPDWORD ? Wstawiłem te zmienne bo tak było w WinSDK
ale nie ma w nim opisu tych typów...

Błędy pojawiają się w liniach z RegQueryValueEx i RegCloseKey a są następujące:

8 untitled1.cpp
passing HKEY__ **' as argument 1 of RegQueryValueExA(HKEY__ *, const CHAR *, DWORD *, DWORD *, BYTE *, DWORD *)'

9 untitled1.cpp
passing HKEY__ **' as argument 1 of RegCloseKey(HKEY__ *)'

Co tam wstawić żeby działało ?

0

Zrób to tak, szybko łatwo i przyjmenie

[code]#include <Registry.hpp>
TRegistry& Rejestr = *new TRegistry();
Rejestr.RootKey = HKEY_CLASSES_ROOT;//Nazwa "korzenia"
Rejestr.OpenKey("TUTAJ NAZWA KLUCZA", false);

//zapis
Rejestr.WriteString("NAZWA WARTOSCI", "WARTOSC");

//odczyt
String dana_odczytana=Rejestr.ReadString("NAZWA WARTOSCI");

Rejestr.CloseKey();
delete &Rejestr;[/code]

0

Co to jest: LPCTSTR, LPTSTR, LPDWORD

To są typy zmiennych a nie zmienne.

L - long
P - pointer
STR - string

łącząc: LPTSTR = Long Pointer To STRing - czyli wskaźnik na łańcuch

reszta analogicznie

0

Zrób to tak, szybko łatwo i przyjmenie

ok :-D ale ja chyba nie mam takiej biblioteki w Dev C++

reszta analogicznie

a C ? [glowa] np. LPCTSTR

Co do funkcji to już się uporałem [hurra] ale cieżko było...

LPBYTE RegReadStr(HKEY hKey, LPTSTR lpSubKey, LPTSTR lpValName) {
  DWORD dwSize = 0;
  LPBYTE lpData = 0;
  if(!RegOpenKeyEx(hKey, lpSubKey, 0, KEY_ALL_ACCESS, &hKey)) {
    RegQueryValueEx(hKey, lpValName, 0, 0, lpData, &dwSize);
    if(dwSize) {
      lpData = (LPBYTE) malloc(dwSize);
      RegQueryValueEx(hKey, lpValName, 0, 0, lpData, &dwSize);
    }
    RegCloseKey(hKey);
    if(dwSize) return lpData; else free(lpData);
  }
  return 0;
}

Zastanawia mnie jeszcze: Czy zawsze zamiast NULL można podawać 0 ?

0

Zastanawia mnie jeszcze: Czy zawsze zamiast NULL można podawać 0 ?

Oto definicja:

#ifndef NULL
#ifdef __cplusplus
#define NULL    0
#else
#define NULL    ((void *)0)
#endif
#endif

1 użytkowników online, w tym zalogowanych: 0, gości: 1