メインメニューを開く

差分

Xamarin.Macでリムーバブルメディアの着脱を検知する

44 バイト追加, 2018年12月28日 (金) 03:33
編集の要約なし
[[Xamarin.MacでMac]]で[[CD-ROM]]や[[DVD-ROM]]、[[USBメモリ]]の挿入などを検出できると何かと嬉しい。
== 実装例 ==NSWorkspace.SharedWorkspace.NotificationCenterを使うと検出できるようだ。この通知で情報として飛んでくるのは変化のあったデバイスのパスのみなので、そのパスをNSWorkspaceNotificationCenterを使うと検出できるようだ。この通知で飛んでくるのは「変化のあったデバイスのパスのみ」なので、そのパスをNSWorkspace.SharedWorkspace.GetFileSystemInfoを使いGetFileSystemInfoに投げて「[[CD-ROM]]なのかなのか」「[[USBメモリ]]なのかなどを判別する。なお、CDなのか」などを判別する。なお、GetFileSystemInfoの結果は[[CD-ROMやDVDROM]]や[[DVD-ROMの場合はディスクフォーマットごとに返ってくる値が違うようだ。どんな種類があるのか全部はまだ把握していない。ROM]]の場合はディスクフォーマットごとに返ってくる値が違うようだ。どんな種類があるのか全部はまだ把握していない。
通知には種類があるようで、この例では以下を実装している。
 * NSWorkspaceDidMountNotification - マウント直後* NSWorkspaceWillUnmountNotification - アンマウント直前 
NSWorkspaceDidUnmountNotification(WillではなくDid)も実装すればアンマウント直前のみならずアンマウント直後も検出できる。ただしアンマウント後なのでデバイスパスしか取得できない。アンマウント失敗時を考慮するとこちらの方が確実かもしれないが詳しくは知らない。
</source>
== 関連項目 == 
*[[Xamarin.Mac/CDやDVDなどの光学メディアを排出する]]
[[category:MonoMac]]
[[category:Xamarin.Mac]]
匿名利用者