Cita:
Empezado por cHackAll
Busca "GetVersion", "GetVersionEx" o ejecuta "winver"
Edito;
Código Delphi [-]procedure TForm1.Button1Click(Sender: TObject);
var
Size: Cardinal;
hKey: Windows.HKEY;
Buffer: ShortString;
begin
Size := SizeOf(Buffer);
RegOpenKey(HKEY_LOCAL_MACHINE, 'software\microsoft\windows nt\currentversion', hKey);
RegQueryValueEx(hKey, 'productname', nil, nil, @Buffer, @Size);
RegCloseKey(hKey);
ShowMessage(string(PChar(@Buffer)));
end;
|
Copiando y modificando (que no es lo mismo que entendiendo) el codigo de cHackAll quedo asi para una ventana de Acerca de:
Código Delphi
[-]
procedure TfrmAbout.FormShow(Sender: TObject);
var
Size, Size2: Cardinal;
hKey, cbKey, csdKey: Windows.HKEY;
Buffer, Buffer1, Buffer2: ShortString;
begin
Size := SizeOf(Buffer);
RegOpenKey(HKEY_LOCAL_MACHINE, 'software\microsoft\windows nt\currentversion', hKey);
RegOpenKey(HKEY_LOCAL_MACHINE, 'software\microsoft\windows nt\currentversion', cbKey);
RegOpenKey(HKEY_LOCAL_MACHINE, 'software\microsoft\windows nt\currentversion', csdKey);
RegQueryValueEx(hKey, 'productname', nil, nil, @Buffer, @Size);
RegQueryValueEx(cbKey, 'currentbuildnumber', nil, nil, @Buffer1, @Size);
RegQueryValueEx(csdKey, 'CSDVersion', nil, nil, @Buffer2, @Size2);
RegCloseKey(hKey);
RegCloseKey(cbKey);
RegCloseKey(CSDKey);
Comments.caption := string(PChar(@Buffer)) + ' (Build ' + string(PChar(@Buffer1)) + ') ' + string(PChar(@Buffer2)); end;
Lo que no entiendo es porque en el label me escribe asi:
Cita:
Microsoft
Windows
XP(Build
2600)
Service
Pack 3
|
sin embargo si uso el showmessage lo escribe correctamente en una linea.
Mientras escribo y reviso el codigo me doy cuenta que tampoco inicialize Size2
Como siempre agradesco la ayuda!