private static int int1024 = 1048576;
ManagementObjectSearcher Vd
= new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_VideoController");
ManagementObjectCollection Video = Vd.Get();
foreach (ManagementObject w in Video)
{
string gpuTotalMem = String.Format("{0} ", (Convert.ToDouble(w["AdapterRam"]) / int1024).ToString());
if (w["Caption"] != null)
StringBild.AppendFormat("Ваша Видеокарта: {0} : {1} [Bytes]", w["Caption"], gpuTotalMem);
}
Для 2-ой показывает (2176 МБ) - тут нормально!
А для 1-ой показывает (2048 MB) - А тут должно быть 2 ГБ
Как показывает у меня:
Ваша Видеокарта: NVIDIA GeForce GTX 860M - (2048 MB)
Ваша Видеокарта: Intel(R) HD Graphics 4600 - (2176 MB)
Проверяем, есть ли остаток от деления 1024. Если остатка нет, то делим ещё на 1024 и приписываем " ГБ". Ели есть остаток от деления, то приписываем " МБ".
foreach (ManagementObject w in Video)
{
string gpuTotalMem;
if((Convert.ToDouble(w["AdapterRam"]) / int1024) % 1024 == 0){
gpuTotalMem = ((Convert.ToDouble(w["AdapterRam"]) / int1024) / 1024).ToString() + " ГБ";
} else {
gpuTotalMem = (Convert.ToDouble(w["AdapterRam"]) / int1024).ToString() + " МБ";
}
if (w["Caption"] != null)
StringBild.AppendFormat("Ваша Видеокарта: {0} : {1} ", w["Caption"], gpuTotalMem);
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей