CD-ROMが挿入されていない場合、それを促すメッセージを出すには?

解決


きむりん  2008-09-26 22:24:24  No: 145225  IP: 192.*.*.*

アプリケーションを使用するとき、
必ずCD-ROMのデータのアクセスを必要とし、
もしCD-ROMが挿入されていない場合は
「CD-ROMを挿入してください」
というようなメッセージを出してCD-ROM挿入を促すようにするには
どうすればよいでしょうか?
PCによってCD-ROMのドライブが異なる場合にも対応したいです。
なお、使用するバージョンはVB2008です。
よろしくお願いします。

編集 削除
魔界の仮面弁士  2008-09-27 00:23:57  No: 145226  IP: 192.*.*.*

> PCによってCD-ROMのドライブが異なる場合にも対応したいです。
複数のドライブを持っている場合はどうしたいのでしょうか。
(すべてのドライブに CD-ROM を入れる必要があるのでしょうか?)

また、その CD-ROM とは、どのような物でもよいのでしょうか?
特定のディスクのみを対象としたいのであれば、それはどのようにして
判定させたいのでしょうか?


> なお、使用するバージョンはVB2008です。
たとえば……。

Dim q = From d In My.Computer.FileSystem.Drives _
        Where d.DriveType = DriveType.CDRom

If q.LongCount() = 0 Then
    MsgBox("このPCには光ディスク ドライブがありません", vbInformation)
Else
    Dim list = q.Where(Function(d) d.IsReady).ToList()

    If list.Count = 0 Then
        MsgBox("いずれかのドライブに CD-ROM を入れてください。", vbInformation)
    Else
        '変数list に、準備のできているドライブの一覧が入っている
    End If
End If

編集 削除
きむりん  2008-09-28 12:58:53  No: 145227  IP: 192.*.*.*

魔界の仮面弁士さん、ご回答ありがとうございます。
複数のCD-ROMドライブがある場合には、いずれかのドライブに
特定のCD-ROMが入っていれば良いです。
しかしながら、特定のCD-ROMであることを識別するには、
どのようにすればよいでしょうか?
また、ここで言っているCD-ROMはCD-Rを使用して作成するのですが、
これを作成するときも何か留意点がありますでしょうか?
よろしくお願いします。

編集 削除
魔界の仮面弁士  2008-09-29 10:03:41  No: 145228  IP: 192.*.*.*

> しかしながら、特定のCD-ROMであることを識別するには、
> どのようにすればよいでしょうか?

それは御自身で決定されるべき事柄ですよね……私らに聞いても答えは出ないですよ。
まぁ相談であればのりますが、それならそれでもう少し情報を提示していただかないと。

分かっているのは、「アプリ使用時に、必ず CD-ROM データのアクセスを必要とする」
という前提条件だけです。これだけの情報では、第三者に答えを出すのは困難です。

そもそも、
  ・何故 CD-ROM で無ければならないのか? (USB メモリや共有フォルダでは駄目なのか?)
  ・どのようなデータを CD-ROM から読み込もうとしているのか?
  ・データ量によっては、ディスクの交換を必要とするのか?
  ・アプリケーションは、そのディスク上から起動されるのか否か?
  ・そのディスクは、きむりんさん自身が作るものなのか? それとも利用者にも自作可能なのか?
などなど考慮すべき点もあるでしょうし、とにかく、仕様の洗い出しが必要でしょうね。
プログラム化するのは、その後の話となるでしょう。


プログラム化の前に、何をもって「特定のCD-ROM」としたいのかを決めてみてください。
そして次に、それが PC から判定できる情報かどうかを検討してください。

たとえば、その判定条件というのが
  「\SAMPLE\DATA というフォルダがあること」
  「ディスク内の総ファイルサイズが 123,456,789 バイトであること」
  「ボリュームラベルが KIMURIN であること」
などであれば、プログラムから判定するのは容易ですが、判定条件を
  「ディスク表面に、"きむりんデータディスク" とペン書きされていること」
  「SONY 製 CDQ80 シリーズの CD-R メディアであること」
などにしてしまうと、プログラムからではどうしようもありませんよね。


その上で『こんな情報を取得したいのだけれど、VB から取得する方法はありますか?』
『こういう情報を得ようと、こんなコードを書いてみたのですが、期待動作しません。』
などといった具体的な相談を投稿すれば、回答も付きやすくなるかと思います。

編集 削除
きむりん  2008-09-29 13:56:47  No: 145229  IP: 192.*.*.*

なるほど、ディスクのボリュームラベルやフォルダ・ファイルの存在で
判断するなどという方法が使えばいいのですね。
質問の内容が掲示板の趣旨に外れた内容となってしまい
申し訳ありませんでした。
これについては解決とさせていただきます。
ありがとうございました。

編集 削除