3

フロッピーが挿入された状態がわかります:

  • フロッピーは挿入されていません
  • フォーマットされていないフロッピーが挿入されました
  • フォーマットされたフロッピーが挿入されました

これは、System.Management名前空間の「WMI」を使用して決定できますか?

その場合、フロッピーの挿入状態が変化したときにイベントを生成できますか?

4

2 に答える 2

2

これはScripting Center @ 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

また、 Win32_LogicalDisk クラスの他のメンバーをチェックすることで、フォーマットされているかどうかを確認することもできます。

于 2008-10-02T18:53:54.557 に答える
1

Bob Kings のアイデアを使用して、次のメソッドを作成しました。

CD、リムーバブル ドライブ、通常のドライブでうまく機能します。

ただし、フロッピーの場合は常に「Not Available」が返されます。

    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();
            }
        }
    }
于 2008-10-03T19:18:44.917 に答える