ディレクトリの作成と削除          <TOP>


CreateDirectory ディレクトリの新規作成
CreateDirectoryEx ディレクトリの新規作成
RemoveDirectory ディレクトリを削除
SetFileAttributes ファイルの属性を変更


「隠しファイル属性」は、青色で表示させています。

 

'================================================================
'= ディレクトリの作成と削除
'=    (CreateDirectory.bas)
'================================================================
#include "Windows.bi"

Type SECURITY_ATTRIBUTES
    nLength              As Long
    lpSecurityDescriptor As Long
    bInheritHandle       As Long
End Type

' ディレクトリの新規作成
Declare Function Api_CreateDirectory& Lib "Kernel32" Alias "CreateDirectoryA" (ByVal lpPathName$, lpSecurityAttributes As SECURITY_ATTRIBUTES)

' ディレクトリの新規作成
Declare Function Api_CreateDirectoryEx& Lib "Kernel32" Alias "CreateDirectoryExA" (ByVal lpTemplateDirectory$, ByVal lpNewDirectory$, lpSecurityAttributes As Any)

' ディレクトリを削除
Declare Function Api_RemoveDirectory& Lib "kernel32" Alias "RemoveDirectoryA" (ByVal lpPathName$)

' ファイルの属性を変更
Declare Function Api_SetFileAttributes& Lib "Kernel32" Alias "SetFileAttributesA" (ByVal lpFileName$, ByVal dwFileAttributes&)

#define FILE_ATTRIBUTE_ARCHIVE &H20     'アーカイブ属性を示す定数
#define FILE_ATTRIBUTE_HIDDEN &H2       '隠しファイル属性
#define FILE_ATTRIBUTE_NORMAL &H80      '他のファイル属性を持たない
#define FILE_ATTRIBUTE_READONLY &H1     '読み込み専用属性
#define FILE_ATTRIBUTE_SYSTEM &H4       'システムファイル属性

Var Shared Button1 As Object

Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var sa As SECURITY_ATTRIBUTES
    Var Ret As Long

    Ret = Api_CreateDirectory("C:\TempPath1", sa)
    If Ret <> 0 Then
        A% = MessageBox("", "「C:\TempPath1」を作成しました!", 0, 2)

        Ret = Api_SetFileAttributes("C:\TempPath1", FILE_ATTRIBUTE_HIDDEN Or FILE_ATTRIBUTE_ARCHIVE)

        If Ret <> 0 Then
            A% = MessageBox("", "「C:\TempPath1」は、隠しファイル属性に設定しました!", 0, 2)
        End If
    End If

    sa.nLength = Len(sa)
    sa.lpSecurityDescriptor = 0
    sa.bInheritHandle = 1

    Ret = Api_CreateDirectoryEx("C:\TempPath1", "C:\TempPath2", sa)

    If Ret <> 0 Then
        A% = MessageBox("", "新ディレクトリ「C:\TempPath2」を作成しました!", 0, 2)

        If A% = 0 Then
            Ret = Api_RemoveDirectory("C:\TempPath1")
            Ret = Api_RemoveDirectory("C:\TempPath2")
            A% = MessageBox("", "「TempPath1・TempPath2」は、削除されました!", 0, 2)
        End If
    End If
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End