フロッピーが挿入された状態がわかります:
- フロッピーは挿入されていません
- フォーマットされていないフロッピーが挿入されました
- フォーマットされたフロッピーが挿入されました
これは、System.Management名前空間の「WMI」を使用して決定できますか?
その場合、フロッピーの挿入状態が変化したときにイベントを生成できますか?
これは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 クラスの他のメンバーをチェックすることで、フォーマットされているかどうかを確認することもできます。
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();
}
}
}