Mega Code Archive

 
Categories / Delphi / Hardware
 

How to get the BIOS number

Title: How to get the BIOS number ? Question: How to retrieve the BIOS number from the registry... Answer: I just found this code from Xavier Pacheco in ''borland.public.delphi.winapi'' and find it quite interesting... please post a comment, if it doesn''t work like this... then i am just going to delete this article ... procedure TForm1.BiosInfo; const Subkey: string = ''Hardware\description\system''; var hkSB: HKEY; rType: LongInt; ValueSize, OrigSize: Longint; ValueBuf: array[0..1000] of char; procedure ParseValueBuf(const VersionType: string); var I, Line: Cardinal; S: string; begin i := 0; Line := 0; while ValueBuf[i] #0 do begin S := StrPas(@ValueBuf[i]); // move the Pchar into a string Inc(Line); Memo1.Lines.Append(Format(''%s Line %d = %s'', [VersionType, Line, S])); // add it to a Memo inc(i, Length(S) + 1); // to point to next sz, or to #0 if at end end; end; begin if RegOpenKeyEx(HKEY_LOCAL_MACHINE, PChar(Subkey), 0, KEY_READ, hkSB) = ERROR_SUCCESS then try OrigSize := sizeof(ValueBuf); ValueSize := OrigSize; rType := REG_MULTI_SZ; if RegQueryValueEx(hkSB, ''SystemBiosVersion'', nil, @rType, @ValueBuf, @ValueSize) = ERROR_SUCCESS then ParseValueBuf(''System BIOS Version''); ValueSize := OrigSize; rType := REG_SZ; if RegQueryValueEx(hkSB, ''SystemBIOSDate'', nil, @rType, @ValueBuf, @ValueSize) = ERROR_SUCCESS then Memo1.Lines.Append(''System BIOS Date '' + ValueBuf); ValueSize := OrigSize; rType := REG_MULTI_SZ; if RegQueryValueEx(hkSB, ''VideoBiosVersion'', nil, @rType, @ValueBuf, @ValueSize) = ERROR_SUCCESS then ParseValueBuf(''Video BIOS Version''); ValueSize := OrigSize; rType := REG_SZ; if RegQueryValueEx(hkSB, ''VideoBIOSDate'', nil, @rType, @ValueBuf, @ValueSize) = ERROR_SUCCESS then Memo1.Lines.Append(''Video BIOS Date '' + ValueBuf); finally RegCloseKey(hkSB); end; end; by Xavier Pacheco (TeamB) Xapware Technologies Inc. www.xapware.com www.xapware.tzo.com