「Xamarin.Macでリムーバブルメディアの着脱を検知する」の版間の差分
imported>Administrator 細 Administrator がページ「MonoMac/リムーバブルメディアの着脱を検知する」を「Xamarin.Mac/リムーバブルメディアの着脱を検知する」に移動しました |
imported>Administrator 編集の要約なし |
||
| 1行目: | 1行目: | ||
Xamarin.Macで[[CD-ROM]]や[[DVD-ROM]]、[[USBメモリ]]の挿入などを検出できると何かと嬉しい。 | |||
==実装例== | == 実装例 == | ||
NSWorkspace.SharedWorkspace. | NSWorkspace.SharedWorkspace.NotificationCenterを使うと検出できるようだ。この通知で情報として飛んでくるのは変化のあったデバイスのパスのみなので、そのパスをNSWorkspace.SharedWorkspace.GetFileSystemInfoを使い[[CD-ROM]]なのか[[USBメモリ]]なのかなどを判別する。なお、CD-ROMやDVD-ROMの場合はディスクフォーマットごとに返ってくる値が違うようだ。どんな種類があるのか全部はまだ把握していない。 | ||
通知には種類があるようで、この例では以下を実装している。 | 通知には種類があるようで、この例では以下を実装している。 | ||
| 8行目: | 8行目: | ||
* NSWorkspaceWillUnmountNotification - アンマウント直前 | * NSWorkspaceWillUnmountNotification - アンマウント直前 | ||
NSWorkspaceDidUnmountNotification(WillではなくDid)も実装すればアンマウント直前のみならずアンマウント直後も検出できる。ただしアンマウント後なのでデバイスパスしか取得できない。アンマウント失敗時を考慮するとこちらの方が確実かもしれないが詳しくは知らない。 | NSWorkspaceDidUnmountNotification(WillではなくDid)も実装すればアンマウント直前のみならずアンマウント直後も検出できる。ただしアンマウント後なのでデバイスパスしか取得できない。アンマウント失敗時を考慮するとこちらの方が確実かもしれないが詳しくは知らない。 | ||
<source lang="csharp"> | <source lang="csharp"> | ||