AVIファイルの情報取得 <TOP>
AVIファイルの情報を取得します。
AVIFileOpen AVIファイルオープン
AVIFileInfo AVIファイル情報取得
AVIFileRelease AVIファイルハンドル解放
AVIFileExit AVIファイルライブラリ解放
エディットボックスにAVIファイルをドロップダウン入力し、『Info取得』をクリックし、情報を取得します。
'================================================================ '= AVIファイル情報取得 '= (AVIFileInfo.bas) '================================================================ #include "Windows.bi" Type AVIFILEINFO dwMaxBytesPerSec As Long 'ファイルのデータレートのほぼ最大値 dwFlags As Long '拡張可能なフラグ dwCaps As Long '適応フラグ dwStreams As Long 'ファイル中のストリーム数 dwSuggestedBufferSize As Long '読み込み時に必要となる予想されるバッファサイズ(バイト) dwWidth As Long 'AVIファイル中の幅(ピクセル) dwHeight As Long 'AVIファイル中の高さ(ピクセル) dwScale As Long '全ファイルに適応できるタイムスケール dwRate As Long '(dwRate÷dwScale)は秒間サンプル数 dwLength As Long 'AVIファイルサイズ。単位は(dwRate÷dwScale) dwEditCount As Long 'AVIファイルに追加、またはAVIファイルから削除されたストリームの数 szFileType As String * 64 'ファイルタイプ情報の記述を含む、Nullで終わる文字列 End Type ' AVIファイルオープン Declare Function Api_AVIFileOpen& Lib "avifil32" Alias "AVIFileOpenA" (ppFile&, ByVal szFile$, ByVal Mode&, pclsidHandler As Any) ' AVIファイルハンドル解放 Declare Function Api_AVIFileRelease& Lib "avifil32" Alias "AVIFileRelease" (ByVal pFile&) ' AVIファイル情報取得 Declare Function Api_AVIFileInfo& Lib "avifil32" Alias "AVIFileInfoA" (ByVal pFile&, pfi As AVIFILEINFO, ByVal lSize&) ' AVIファイル初期化 Declare Sub Api_AVIFileInit Lib "avifil32" Alias "AVIFileInit" () ' AVIファイルライブラリ解放 Declare Sub Api_AVIFileExit Lib "avifil32" Alias "AVIFileExit" () #define OF_SHARE_DENY_WRITE &H20 '他のプロセスから書き込み可能 Var Shared Text1 As Object Var Shared Edit1 As Object Var Shared List1 As Object Var Shared Button1 As Object Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14 Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14 List1.Attach GetDlgItem("List1") : List1.SetFontSize 14 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 Var Shared FileName As String '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var hFile As Long Var afi As AVIFILEINFO Var Ret As Long FileName = Edit1.GetWindowText 'AVIファイル初期化 Api_AVIFileInit 'AVIファイルハンドル取得 Ret = Api_AVIFileOpen(hFile, FileName, OF_SHARE_DENY_WRITE, ByVal 0) If Ret = 0 Then 'AVIインフォメーション検索 Ret = Api_AVIFileInfo(hFile, afi, Len(afi)) If Ret = 0 Then List1.ResetContent List1.AddString "dwMaxBytesPerSec =" & Str$(afi.dwMaxBytesPerSec) List1.AddString "dwFlags =" & Str$(afi.dwFlags) List1.AddString "dwCaps =" & Str$(afi.dwCaps) List1.AddString "dwStreams =" & Str$(afi.dwStreams) List1.AddString "dwSuggestedBufferSize=" & Str$(afi.dwSuggestedBufferSize) List1.AddString "dwWidth =" & Str$(afi.dwWidth) List1.AddString "dwHeight =" & Str$(afi.dwHeight) List1.AddString "dwScale =" & Str$(afi.dwScale) List1.AddString "dwRate =" & Str$(afi.dwRate) List1.AddString "dwLength =" & Str$(afi.dwLength) List1.AddString "dwEditCount =" & Str$(afi.dwEditCount) List1.AddString "szFileType =" & afi.szFileType Else A% = MessageBox("", "AVIファイルオープンエラー", 0, 2) End If 'AVIファイルハンドル解放 Ret = Api_AVIFileRelease(hFile) Else A% = MessageBox("", "AVIファイルオープンエラー", 0, 2) End If Api_AVIFileExit End Sub '================================================================ '= シェルドロップされたファイル名を取得 '================================================================ Declare Sub Edit1_DropFiles edecl (ByVal DF As Long) Sub Edit1_DropFiles(ByVal DF As Long) Var CN As Long CN = GetDropFileCount(DF) FileName = GetDropFileName(DF, 0) Edit1.SetWindowText FileName End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End