View Single Post
  #2  
Old 28-11-2014, 06:13
Carldric Clement's Avatar
Carldric Clement Carldric Clement is offline
Registered User
 
Join Date: Aug 2014
Location: Toboh, Sabah, Malaysia
Posts: 595
Thanks: 599
Thanked 656 Times in 233 Posts
Carldric Clement is on a distinguished road
Talking Unknown Identifier "n"!

Quote:
Originally Posted by Razor12911 View Post
Use this to get windows name

function WindowsName: String;
var
EditionID,ProductName :String;
Version: TWindowsVersion;
begin
if Version.NTPlatform then
begin
RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows NT\CurrentVersion','ProductName', ProductName);
RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows NT\CurrentVersion','EditionID', EditionID);
if Pos(EditionID, ProductName) <> 0 then
SetLength(ProductName,Pos(EditionID, ProductName) - 1)
else
ProductName:= ProductName + ' ';
StringChange(ProductName, 'Microsoft ', '');
if Version.ServicePackMajor <> 0 then
Result := ProductName + 'Service Pack ' + InttoStr(Version.ServicePackMajor)
else begin
SetLength(ProductName,Length(ProductName) - 1)
Result := ProductName;
end;
end else
Result := 'Unknown Operating System';
end;

how to use

System.Caption:=WindowName;


and use this to get video memory

type
PDisplay_Device = record
cb: DWord;
DeviceName: array [0..31] of char;
DeviceString: array [0..127] of char;
StateFlags: DWord;
DeviceID, DeviceKey: array [0..127] of char;
end;

function EnumDisplayDevices(lpDevice, iDevNum: DWord; var lpDisplayDevice: PDisplay_Device; dwFlags: DWord): Boolean; external '[email protected] Stdcall';

function RoundUp(Num: Integer): Integer;
var
i, k: Integer;
begin
i:= trunc(Num/64);
k:= 64*i;
if (k<Num) then
i:=i+1;
k:= 64*i;
Result:= k;
end;

function MBToGB(MB : Integer): String;
begin
if Length(IntToStr(MB)) > 3 then
Result := Copy(IntToStr(MB), 0, Length(IntToStr(MB))-3) + '.' + Copy(IntToStr(MB), Length(IntToStr(MB))-2, 1) + ' GB'
else
Result := IntToStr(MB) + ' MB';
end;

function VideoSize: Integer;
var
lpDisplayDevice: PDisplay_Device;
DeviceKey: String;
DeviceValue: Cardinal;
DeviceName: AnsiString;
begin
lpDisplayDevice.cb := SizeOf(lpDisplayDevice);
DeviceKey:= '';
n:= 0;
while not (EnumDisplayDevices(0, n, lpDisplayDevice, 0)and(lpDisplayDevice.StateFlags and 4 > 0))and(n < 127) do n:= n+1;
for n := 0 to 127 do DeviceKey:= DeviceKey + lpDisplayDevice.DeviceKey[n];
Delete(DeviceKey, Pos(Chr(0), DeviceKey), 127);
StringChange(DeviceKey, '\Registry\Machine\', '');
i := 1;
DeviceValue := 0;
if RegQueryBinaryValue(HKLM, DeviceKey, 'HardwareInformation.MemorySize', DeviceName) then
for n := 1 to Length(DeviceName) do
begin
DeviceValue := DeviceValue + Ord(DeviceName[n])*i;
i := i*$100;
end else
if not RegQueryDWordValue(HKLM, DeviceKey, 'HardwareInformation.MemorySize', DeviceValue) then
RegQueryDWordValue(HKLM, DeviceKey + '\Info', 'VideoMemory', DeviceValue);
DeviceName:= '';
for n := 0 to 127 do DeviceName := DeviceName + lpDisplayDevice.DeviceString[n];
Delete(DeviceName, Pos( Chr(0), DeviceName ), 127);
Result:=RoundUp(DeviceValue/(1024*1024));
end;

how to use

VideoMem.Caption:=MBToGB(VideoSize);
Unknown Identifier "n"!
What is [n:= 0;]?
Reply With Quote