Comment voulez-vous obtenir la quantité totale de mémoire RAM de l'ordinateur?
À l'aide de C#, je veux obtenir le montant total de la mémoire RAM de mon ordinateur.
Avec le PerformanceCounter je peux obtenir la quantité de ram Disponible, en définissant:
counter.CategoryName = "Memory";
counter.Countername = "Available MBytes";
Mais je n'arrive pas à trouver un moyen d'obtenir la quantité totale de mémoire. Comment pourrais-je aller sur le faire?
Mise à jour:
MagicKat: j'ai vu que quand j'étais à la recherche, mais elle ne fonctionne pas - "vous manque une assemblée ou une référence?". J'ai cherché à ajouter que, pour les Références, mais je ne vois pas là.
Vous devez vous connecter pour publier un commentaire.
P/invoke façon MODIFIER : modification GlobalMemoryStatusEx pour donner des résultats précis (heh)
Puis à utiliser comme:
Ou vous pouvez utiliser WMI (géré mais plus lent) pour la requête "TotalPhysicalMemory" dans le "Win32_ComputerSystem" de la classe.
Modifier code fixe par de commentaire joel-llamaduck.blogspot.com
this.dwLength = (uint)Marshal.SizeOf(this);
et il fonctionne de la même (j'ai eu du mal avec l'aide de NativeMethods donc ce correctif fonctionne maintenant).GlobalMemoryStatusEx
? Je n'arrive pas à trouver sa refernce. Oh Man, j'obtiens 0 sur tout cela. Pourquoi est-ti freaking difficile d'obtenir de mémoire et de cpu info en C#; blymeAjouter une référence à
Microsoft.VisualBasic
et unusing Microsoft.VisualBasic.Devices;
.La
ComputerInfo
classe contient toutes les informations dont vous avez besoin.Ajouter une référence à Microsoft.VisualBasic.dll, comme quelqu'un l'a mentionné ci-dessus. L'obtention de mémoire physique totale est aussi simple que cela (oui, je l'ai testé):
Si vous arrive d'être en utilisant Mono, alors vous pourriez être intéressés de savoir que les Mono 2.8 (pour être publié plus tard cette année) aura un compteur de performance qui relève de la taille de la mémoire physique sur toutes les plates-formes Mono s'exécute sur (y compris Windows). Vous serait de récupérer la valeur du compteur à l'aide de cet extrait de code:
Si vous êtes intéressé par un code C qui fournit le compteur de performance, il peut être trouvé ici.
Ici toutes les réponses, y compris l'reconnus, vous donnera la quantité totale de mémoire RAM disponible pour les utiliser. Et que peut-être ce qui l'OP voulait.
Mais si vous êtes intéressé à obtenir le montant de installé de RAM, alors vous aurez envie de faire un appel à la GetPhysicallyInstalledSystemMemory fonction.
À partir du lien, dans la section Remarques:
Exemple de code:
Une autre manière de faire ceci est d'utiliser l' .NET Système.La gestion de l'interrogation des installations:
vous pouvez simplement utiliser ce code pour obtenir ces informations, il suffit d'ajouter la référence
et l'utilisez simplement le code suivant
Vous pouvez utiliser WMI. Trouvé un snippit.
Set
n'est plus nécessaire pour VB.NET est ce code VB6?Cette fonction (
ManagementQuery
) fonctionne sur Windows XP et versions ultérieures:Utilisation:
BytesToMb
la fonction venir à partir de?Personne n'a mentionné GetPerformanceInfo encore. PInvoke signatures sont disponibles.
Cette fonction rend le système suivant l'ensemble de l'information disponible:
PhysicalTotal
est ce que l'OP est à la recherche d', bien que la valeur est le nombre de pages, afin de convertir d'octets, de la multiplier par lePageSize
valeur retournée..NIT a une limite à la quantité de mémoire il peut accéder à des total. Il y a un pourcentage, puis 2 GO sous xp a été dur de plafond.
Vous pourriez avoir 4 GO, et il serait de tuer l'application quand il a frappé 2 GO.
Également en mode 64 bits, il y a un pourcentage de la mémoire vous pouvez utiliser le système, donc je ne suis pas sûr si vous pouvez demander de l'ensemble de la chose ou si c'est plus précisément en garde contre des.
Compatible avec .Net et Mono (testé avec Win10/FreeBSD/CentOS)
À l'aide de
ComputerInfo
code source etPerformanceCounter
s en Mono et en tant que sauvegarde pour .Net:My
travailler en C#?