Bonjour !

Je développe actuellement une DLL qui me permettra de récupérer les informations du système comme le processeur, cartes graphiques, disques ...

Du coup, voici un petit exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
SysInfo si = new SysInfo();
Processor[] p = si.GetProcessor();
Graphic[] g = si.GetGraphics();
La classe Processor contient un duo variable/propriété, par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
private int numberOfCores;
private int numberOfLogicalProcessors;
 
public int NumberOfLogicalProcessors {
            get {
                return numberOfLogicalProcessors;
            }
            internal set {
                numberOfLogicalProcessors = value;
            }
        }
 
        public int NumberOfCores {
            get {
                return numberOfCores;
            }
            internal set {
                numberOfCores = value;
            }
        }
Pour 'remplir' la classe je procède comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
public Graphic[] GetGraphics() {
            query = "SELECT * FROM Win32_VideoController";
            mos.Query.QueryString = query;
            moc = mos.Get();
            Load(Components.Graphics, moc);
 
            return graphics;
        }
Et voici la méthode Load qui me pose problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
private void Load(Components c, ManagementObjectCollection moc) {
foreach (ManagementObject mo in moc) {
                int i = 0;
if (c == Components.Graphics) {
                    graphics = new Graphic[moc.Count];
                    Graphic g = new Graphic();
                    g.AdapterCompatibility = RequestString(mo, "adaptercompatibility");
// etc pour les autres composants
Coté processeur, récupérer les informations ne pose aucun problème, sauf que quand je veux récupérer les informations sur les cartes graphiques via la query "SELECT * FROM Win32_VideoController", j'ai une exception au niveau du commencement du foreach :
Une exception non gérée du type 'System.Management.ManagementException' s'est produite dans System.Management.dll

Informations supplémentaires : Classe non valide
Il y a à peine 2 heures de cela, et depuis le début du projet, je n'avais absolument aucun problème, pas d'exception de ce coté-ci ... Du coup je me sens un peu perdu ... J'avais déjà eu cette erreur lorsque j'avais fait une faute dans la requête, mais là cela m'a l'air bon ... http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

Désolé s'il y peut-être un peu beaucoup de code, je voulais être clair !

Merci par avance !