C# sistemde bulunan toplam bellek verisini öğrenme

Cyberpsychosis

Kilopat
Katılım
16 Ocak 2018
Mesajlar
576
Makaleler
1
Çözümler
7
Yer
Night City
Daha fazla  
Cinsiyet
Erkek
Meslek
Bilgisayar Mühendisi
Merhaba VS2019 C# üzerinde bir program yazıyorum. Sistemdeki toplam RAM sayısına ulaşmam gerekiyor. Bunu nasıl yapabilirim?
 
C# bilmiyorum ama Platform diye kütüphane vardı galiba. Onu araştırabilirsiniz eğer C#'da varsa o yardım eder.
 
İnternet yazılımla ilgili sorularınız için sınırsız bir bilgi kaynağı. Bu forumda istediğiniz şeyle ilgili doğrudan size cevap verebilecek biri çıkmayabilir. Size tavsiyem İngilizcenizi geliştirin ve internetteki kaynakları kullanmayı öğrenin. Hem daha hızlı sonuca ulaşırsınız hem aynı işi farklı yöntemlerle yapmayı öğrenirsiniz.
 
static double GetRam() { double ram = 0; ObjectQuery wql = new ObjectQuery("SELECT * FROM Win32_OperatingSystem"); ManagementObjectSearcher searcher = new ManagementObjectSearcher(wql); ManagementObjectCollection results = searcher.Get(); double res; foreach (ManagementObject result in results) { res = Convert.ToDouble(result["TotalVisibleMemorySize"]); double fres = Math.Round((res / (1024 * 1024)), 2); ram = fres; } return ram; }
Bu kod size Double cinsinden kullanılabilir RAM miktarını verecektir.

System.Management; Kütüphanesini eklemeyi unutmayın.
 
System.Runtime.InteropServices.MarshalDirectiveException: 'Cannot marshal 'parameter #3': Cannot marshal a string by-value with the [Out] attribute.'

Hatası alıyorum System.Management referansını eklememe rağmen
 
System.Runtime.InteropServices.MarshalDirectiveException: 'Cannot marshal 'parameter #3': Cannot marshal a string by-value with the [Out] attribute.'

Hatası alıyorum System.Management referansını eklememe rağmen
Hatayı verdiği yerin ekran görüntüsünü atar mısınız?
 
Son düzenleme:
System.Runtime.InteropServices.MarshalDirectiveException: 'Cannot marshal 'parameter #3': Cannot marshal a string by-value with the [Out] attribute.'

Hatası alıyorum System.Management referansını eklememe rağmen
Kullandığınız .Net versiyonu nedir?
 
Kullandığım .NET versiyonu 5.0. Size asıl amacımdan bahsedeyim belki daha açıklayıcı olur. Mesela sistemimde 8 GB Ram var ben bu sayıyı if satırı içinde başka int'ler ile karşılaştırmak istiyorum. Mesela sistem belleği 16 GB'dan aşağıdaysa MessageBox.Show("Yetersiz Bellek"); tarzı.
 
My.Computer.Info.AvailablePhysicalMemory();
Bu kod ile toplam belleği Byte cinsinden alabilirsiniz.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…