BOOL CreateDirectory(LPCTSTR PathName, LPSECURITY_ATTRIBUTES Security);
Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" ( _
ByVal PathName As String, _
ByVal Security As Long) As Long
Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" ( _
ByVal PathName As String, _
ByRef Security As SECURITY_ATTRIBUTES) As Long
PathNameに指定可能なディレクトリ名の最大長はMAX_PATHである。UNICODE版では、ディレクトリ名の先頭に“\\?\”を加えることによりMAX_PATHを超えて指定することができる。指定するディレクトリ名がUNCであるならば、"\\?\UNC\マシン名\共有名\ディレクトリ名"となる。しかし、あまりに長いディレクトリ名は、対応するアプリケーションが少ないことが予想されるので、お勧めしない。(NT4.0では、エクスプローラやDOSプロンプトが誤動作を起こした)
引数の意味は、以下の通り。
| PathName(IN) | 作成するディレクトリの相対ディレクトリ名、または絶対ディレクトリ名。 |
| Serurity(IN) | 作成するディレクトリに付与するセキュリティ属性。セキュリティ属性を指定しない場合は、NULLを指定する。 |
戻り値は、関数の実行に成功したか否かを表す真偽値である。
主なエラーは、以下の通り。
| ERROR_PATH_NOT_FOUND | 存在しないディレクトリの下にディレクトリを作成しようとした。 |
| ERROR_FILENAME_EXCED_RANGE | ディレクトリ名が長すぎる。 |
| ERROR_ALREADY_EXISTS | 既にそのディレクトリは存在する。 |
void DoCreateDir()
{
CreateDirectory("c:\\test", NULL);
}
'主な宣言
Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" ( _
ByVal PathName As String, _
ByVal Security As Long) As Long
Public Const ERROR_ALREADY_EXISTS As Long = 183
' ディレクトリの作成
Private Sub DoCreateDir()
Dim bResult As Long
bResult = CreateDirectory("c:\test", 0)
If bResult = 0 Then
MsgBox "エラー発生"
If Err.LastDllError = ERROR_ALREADY_EXISTS Then
MsgBox "既にディレクトリが存在している"
End If
Else
MsgBox "成功"
End If
End Sub