Puis-je tester un lecteur de disquette avec WMI & amp; Espace de noms System.Management?

StackOverflow https://stackoverflow.com/questions/154754

  •  03-07-2019
  •  | 
  •  

Question

Je voudrais connaître l'état de la disquette insérée :

  • aucune disquette insérée
  • disquette non formatée insérée
  • disquette formatée insérée

Cela peut-il être déterminé avec "WMI"? dans l'espace de noms System.Management?

Si tel est le cas, puis-je générer des événements lorsque l'état de la disquette insérée est modifié?

Était-ce utile?

La solution 2

En utilisant l’idée de Bob Kings, j’ai écrit la méthode suivante.

Cela fonctionne très bien sur les CD, les lecteurs amovibles et les lecteurs normaux.

Cependant, pour une disquette, le résultat est toujours "Pas disponible".

    public static void TestFloppy( char driveLetter ) {
        using( var searcher = new ManagementObjectSearcher(  @"SELECT * FROM Win32_LogicalDisk WHERE DeviceID = '" + driveLetter + ":'" ) )
        using( var logicalDisks = searcher.Get() ) {
            foreach( ManagementObject logicalDisk in logicalDisks ) {
                var fs = logicalDisk[ "FreeSpace" ];
                Console.WriteLine( "FreeSpace = " + ( fs ?? "Not Available" ) );

                logicalDisk.Dispose();
            }
        }
    }

Autres conseils

Cela vient de Centre de scripts @ MSDN :

strComputer = "."
Set objWMIService = GetObject( _
    "winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
    ("Select * From Win32_LogicalDisk Where DeviceID = 'A:'")

For Each objItem in colItems
    intFreeSpace = objItem.FreeSpace
    If IsNull(intFreeSpace) Then
        Wscript.Echo "There is no disk in the floppy drive."
    Else
        Wscript.Echo "There is a disk in the floppy drive."
    End If
Next

Vous pourrez également savoir s'il est formaté ou non, en vérifiant les autres membres du Classe Win32_LogicalDisk .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top