ドライブが書き込めるかどうかをチェックする
  (C) 2001 A c t o r .N e t Soft Ware



 以下に公開するソースなどの著作は 篠田直樹 に復帰します。
原則として無許可で使用する事が出来ますが、ここに書かれている内容を
直リンクや引用などであたかも第三者が作成した様に見せたり如何なる事情でも金銭が発生する行為を禁止します。



' A c t o r . N e t
' ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
'□□ http://actornet.hp.infoseek.co.jp/
'
'Copylight(C)2004 Naoki Shinoda

Public Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" ( _
ByVal lpRootPathName As String, _
lpSectorsPerCluster As Long, _
lpBytesPerSector As Long, _
lpNumberOfFreeClusters As Long, _
lpTotalNumberOfClusters As Long) As Long

Private sub ????()

Dim Secs As Long
Dim SecSize As Long
Dim FreeClusters As Long
Dim Clusters As Long
Dim DriveName As String

DriveName = "C:\"

GetDiskFreeSpace DriveName, Secs, _     'クラスタ当たりのセクタ数
SecSize, _    'セクタ当たりのバイト数
FreeClusters, _ 'ドライブの空きサイズ
Clusters     '全クラスタ数

If Not (FreeClusters = 0) Then
'書き込めるドライブだった場合

Else
'書き込めないドライブだった場合

End If
End sub

ドライブチェックは Public Declare Function 以下の GetDiskFreeSpace WinAPIを使います。
VBコンポーネントでチェックする別の手法もありますが、
IEのバージョンが古いと動作しないなどの不都合が起きる為、お勧めしません。


ちなみにGetDiskFreeSpace 関数を呼び出す時に( )が付いていませんが、
これは戻り値は要らないという意味です。
他の手法には頭に Call を付けて( )を入れる方法があります。
ソースコードとしては後者の方が解りやすいでしょう。



Copyright (C) 2001 A c t o r .N e t Soft Ware All Right Reserved