USB を Eject するソースコードの取得と実装

  C# 用 と C++ 用を CodeProject より取得



サインアップが必要ですが、損は無いですね。時々お世話になってます。

↓C#
http://www.codeproject.com/KB/system/usbeject.aspx
( C# 用と言っても、ライブラリなので、ビルドしてしまえば VB.NET からも普通に使えます )

↓C++
http://www.codeproject.com/KB/system/RemoveDriveByLetter.aspx

C# 用は、Download source files - 106.9 Kb に、ライブラリ込みでデモアプリが入って
ますが、何も考えずに C# のクラスライブラリプロジェクトにインポートしてビルドし、
Windows アプリケーションプロジェクトから参照して使います

( ここでは、VB.NET から使ってみました )

  
Imports UsbEject.Library

Public Class Form1

	Private Sub Button1_Click(ByVal sender As System.Object, _
	ByVal e As System.EventArgs) Handles Button1.Click

		Dim volumeDeviceClass As New VolumeDeviceClass()
		For Each device As Volume In volumeDeviceClass.Devices
			' is this volume on USB disks? 
			If Not device.IsUsb Then
				Continue For
			End If

			' is this volume a logical disk? 
			If (device.LogicalDrive Is Nothing) OrElse _
			(device.LogicalDrive.Length = 0) Then
				Continue For
			End If

			MessageBox.Show(device.LogicalDrive)
			' allow Windows to display any relevant UI 
			device.Eject(False)
		Next

	End Sub
End Class
  

もとのページにあるサンプルは、C# で書かれてましたが、そのままでは芸が無いので
http://labs.developerfusion.co.uk/convert/csharp-to-vb.aspx でコンバート
して使用しています

FalseTrue に変えると、「安全に取り外す事ができます」というダイアログが表示されます。
( XP だと、バルーンですね )

device.LogicalDrive には、"E:" という形のドライブレターが入っています

つまり、非常に使いやすい形になっていますので、利用するのは簡単だと思います。
実行には、すこし時間がかかります。デバイスリストを全て取得しているせいだとは思いますが、
これは、WMI スクリプトで一覧取得した時もそうでした。

まあ、USB という形態から考えても、そう急ぐ必要性も無いでしょう。










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ