ファイルサイズの取得 <TOP>
ファイルサイズを取得します。
CreateFile 指定したファイルをオープンし、デバイスハンドルを返す
GetFileInformationByHandle 指定されたファイルに関する情報を取得
CloseHandle オープンされているオブジェクトハンドルをクローズ
選択したファイルのサイズを取得します。
'================================================================ '= ファイルサイズの取得(V) '= (GetFileInformationByHandle.bas) '================================================================ #include "Windows.bi" #define OPEN_EXISTING 3 'ファイルをオープンする(存在しない場合失敗) Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type Type BY_HANDLE_FILE_INFORMATION dwFileAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME dwVolumeSerialNumber As Long nFileSizeHigh As Long nFileSizeLow As Long nNumberOfLinks As Long nFileIndexHigh As Long nFileIndexLow As Long End Type ' 指定したファイルをオープンし、デバイスハンドルを返す Declare Function Api_CreateFile& Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName$, ByVal dwDesiredAccess&, ByVal dwShareMode&, lpSecurityAttributes As Any, ByVal dwCreationDisposition&, ByVal dwFlagsAndAttributes&, ByVal hTemplateFile&) ' 指定されたファイルに関する情報を取得 Declare Function Api_GetFileInformationByHandle& Lib "kernel32" Alias "GetFileInformationByHandle" (ByVal hFile&, lpFileInformation As BY_HANDLE_FILE_INFORMATION) ' オープンされているオブジェクトハンドルをクローズ Declare Function Api_CloseHandle& Lib "kernel32" Alias "CloseHandle" (ByVal hObject&) Var Shared FileName As String Var Shared Text1 As Object Var Shared Edit1 As Object Var Shared Button1 As Object Var Shared Button2 As Object Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14 Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 Button2.Attach GetDlgItem("Button2") : Button2.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Edit1.SetWindowText "" FileName = WinOpenDlg("ファイルのオープン","C:\*.*","全てのファイル(*.*)", 0) If FileName <> Chr$(&H1B) Then Edit1.SetWindowText FileName End If End Sub '================================================================ '= '================================================================ Declare Sub Button2_on edecl () Sub Button2_on() Var hFile As Long Var FileInfo As BY_HANDLE_FILE_INFORMATION Var Ret As Long 'ファイルをオープンし、デバイスハンドルを返す hFile = Api_CreateFile(FileName, 0, 0, ByVal 0, OPEN_EXISTING, 0, ByVal 0) 'ファイルに関する情報を取得 Ret = Api_GetFileInformationByHandle(hFile, FileInfo) 'ハンドルをクローズ Ret = Api_CloseHandle(hFile) '結果表示 Edit1.SetWindowText FileName & Chr$(13, 10) & "File size: " & format$(FileInfo.nFileSizeLow, "###,###,### バイト") End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End