CD-RWの空き要領を取得するには?

解決


まゆ  2003-09-26 02:13:48  No: 108810

GetFreeSpace関数を使用してCD-RWの空き要領を取得しようとしたのですが
何故かうまくいきません。
CD-RWに何も書かれていない場合、空き要領が0と認識されてしまいます。
CD-RWをドライブにセットしてあるかどうか判る方法もわからず・・・。
どなたか教えてください。
VB5で開発してます。XP環境です。

よろしくお願いします!


まゆ  2003-09-26 02:23:10  No: 108811

ちなみに、ドライブに入っているCDがCD−RなのかCD−RWなのか判別する方法ってあるのでしょうか?


まゆ  2003-09-26 20:25:07  No: 108812

GetFreespace(lpRootPathName,lpSectorsPerCluster,lpBytesPerSector,
lpNumberOfFreeClusters,lpTtoalNumberOfClusters)関数を使用してみたの
ですが、空き容量を算出するために必要な引数lpNumberOfFreeClusters
(フリークラスタ数)が0で返ってきます。
で、ドライブの容量=CDの使用容量となります。
(650MBのCDであっても100MB使用していたら100MBと返ります)

CD-ROMドライブのみ生じる現象です。
FDやCFドライブの容量は正しく取得できています。
何故なのでしょう?


魔界の仮面弁士  2003-09-26 21:08:19  No: 108813

> CD-ROMドライブのみ生じる現象です。
仕様という事で。(^_^;)

> CD−RなのかCD−RWなのか判別
IMAPIを使えば取得できるかも。(未確認)

> 空き要領を取得
FolderオブジェクトのGetDetailsOfメソッドで取得できるかも。
以下、手抜きコード。

Option Explicit

Private Sub Form_Load()
    'CD-RWドライブを指定
    MsgBox GetFreeArea("E:\")
End Sub

Private Function GetFreeArea(ByVal Drive As String) As String
    Dim S As Object
    Dim F As Object
    Dim FI As Object

    If Len(Drive) = 1 Then
        Drive = Drive & ":"
    End If
    If Right(Drive, 1) <> "\" Then
        Drive = Drive & "\"
    End If

    On Error Resume Next

    Set S = CreateObject("Shell.Application")
    Set F = S.NameSpace(CVar(Drive))
    Set FI = F.Items().Item()
    GetFreeArea = F.ParentFolder.GetDetailsOf(FI, 3)

    On Error GoTo 0

    Set FI = Nothing
    Set F = Nothing
    Set S = Nothing
End Function


まゆ  2003-09-26 22:33:09  No: 108814

できましたヾ(^-^)ゞ
ありがとうございます♪

>> CD-ROMドライブのみ生じる現象です。
>>仕様という事で。(^_^;)

ん?仕様なのですか?


まこと  2003-10-29 20:44:41  No: 108815

仮面弁士さんのGetFreeAreaを使用してみたのですが
空き容量(サイズ)ではなく”空き領域”という文字が返ってきました。

・・・ほんとに「解決」したのですか?


まこと  2003-10-29 21:19:01  No: 108816

CD-RWドライブで試さなかったので上記のような
結果となったようです。

CD-RWドライブで試したら上手くいきました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加