unit use_mp3infp;
interface
uses
Windows;
{
function mp3infp_GetVer: DWORD; stdcall;
function mp3infp_ViewPropEx(hWnd: HWND; const szFileName: PChar; dwPage: DWORD; modeless: BOOL; param1: DWORD;
param2: DWORD): Integer; stdcall;
function mp3infp_ViewProp(hWnd: HWND; const szFileName: PChar; dwPage: DWORD): BOOL; stdcall;
function mp3infp_GetType: DWORD; stdcall;
function mp3infp_Load(hWnd: HWND; const szFileName: PChar): DWORD; stdcall;
function mp3infp_GetValue(const szValueName: PChar; buf: PPChar): BOOL; stdcall;
function mp3infp_mp3_GetTagType: DWORD; stdcall;
function mp3infp_SetConf(tag: PChar; value: PChar): BOOL; stdcall;
function mp3infp_SetValue(const szValueName: PChar; const buf: PChar): DWORD; stdcall;
function mp3infp_Save(const szFileName: PChar): DWORD; stdcall;
function mp3infp_mp3_MakeId3v1 (const szFileName: PChar): DWORD; stdcall;
function mp3infp_mp3_DelId3v1 (const szFileName: PChar): DWORD; stdcall;
function mp3infp_mp3_MakeId3v2 (const szFileName: PChar): DWORD; stdcall;
function mp3infp_mp3_DelId3v2 (const szFileName: PChar): DWORD; stdcall;
function mp3infp_mp3_MakeRMP (const szFileName: PChar): DWORD; stdcall;
function mp3infp_mp3_DelRMP (const szFileName: PChar): DWORD; stdcall;
function mp3infp_mp3_MakeApeTag(const szFileName: PChar): DWORD; stdcall;
function mp3infp_mp3_DelApeTag (const szFileName: PChar): DWORD; stdcall;
}
{=======================================================================================
名前: mp3infp_GetVer
概要: mp3infpのバージョンを取得する
引数: なし
戻値: DWORD バージョン情報
Ver.2.11 = 0x0211
備考:
対応: Ver2.11〜
}
function mp3infp_GetVer: DWORD;
stdcall external 'mp3infp.dll';
{=======================================================================================
名前: mp3infp_ViewPropEx
概要: mp3infpに対応したファイル形式のプロパティを開く(モーダルダイアログ版)
説明: 指定ファイルのプロパティをmp3infpのタブをアクティブにして開きます
※シェルエクステンションを使用せずにmp3infp.dll単独の動作となります
※シェルエクステンション標準のプロパティページは表示されません
引数:
IN HWND hWnd
呼び出し元ウインドウハンドル
呼び出し元ウインドウ上にダイアログを表示します
NULLならデスクトップを指定したとみなします
IN char *szFileName 対象ファイル名をフルパスで指定。
IN DWORD dwPage
・mp3infpの何ページ目をアクティブにするか指定する(0=ID3v1 / 1=ID3v2 / 2=RiffSIF
/ 3=APE(Ver2.47))
・タグを含まないmp3の場合のみ有効
・タグを含む場合はID3v2/APE/RiffSIF/ID3v1の順で検索して、最初に見つかったタグをアクティブにします
IN BOOL modeless TRUEならプロパティを表示したまま制御を返します。戻り値にはプロパティのウインドウハンドルが入ります。
FALSEならプロパティを閉じるまで制御を返しません。
DWORD param1 未使用(0を指定してください)
DWORD param2 未使用(0を指定してください)
戻値: int 成功=0以上/失敗=-1
対応: Ver2.48〜
}
function mp3infp_ViewPropEx(hWnd: HWND;
const szFileName: PChar; dwPage: DWORD; modeless: BOOL; param1: DWORD;
param2: DWORD): Integer;
stdcall external 'mp3infp.dll';
{=======================================================================================
名前: mp3infp_ViewProp
概要: mp3infpに対応したファイル形式のプロパティを開く
説明: 指定ファイルのプロパティをmp3infpのタブをアクティブにして開きます
引数:
IN HWND hWnd
呼び出し元ウインドウハンドル
IN char *szFileName 対象ファイル名をフルパスで指定。
IN DWORD dwPage
・mp3infpの何ページ目をアクティブにするか指定する(0=ID3v1 / 1=ID3v2 / 2=RiffSIF
/ 3=APE(Ver2.47))
・タグを含まないmp3の場合のみ有効
・タグを含む場合はID3v2/APE/RiffSIF/ID3v1の順で検索して、最初に見つかったタグをアクティブにします
戻値: BOOL 成功=TRUE/失敗=FALSE
対応: Ver2.00〜
}
function mp3infp_ViewProp(hWnd: HWND;
const szFileName: PChar; dwPage: DWORD): BOOL;
stdcall external 'mp3infp.dll';
{=======================================================================================
名前: mp3infp_Load
概要: タグ情報をロードする
引数:
IN HWND hWnd
呼び出し元ウインドウを指定します。無い場合はNULL。
IN const char *szFileName
対象ファイル名をフルパスで指定。
戻値: DWORD
-1=ロード失敗
ERROR_SUCCESS=成功
(その他)=Win32エラーコード (FormatMessageで文字列を取得できる)
対応: Ver2.26〜
}
function mp3infp_Load(hWnd: HWND;
const szFileName: PChar): DWORD;
stdcall external 'mp3infp.dll';
{
////////////////////////////////////////////////////////////////////
表1 mp3infp_GetValue()/mp3infp_SetValue()でszValueNameに指定する名前一覧
////////////////////////////////////////////////////////////////////
[共通](※1)
ファイル名
"FILE" (v2.41〜)
拡張子 "FEXT" (v2.41〜)
パス "PATH" (v2.41〜)
サイズ(byte単位) "SIZ1" (v2.41〜)
サイズ(Kbyte単位) "SIZK" (v2.41〜)
サイズ(Mbyte単位) "SIZM" (v2.41〜)
[MP3] ID3v1 ID3v2 RiffSIF APE
フォーマット(※1) "AFMT" "AFMT" "AFMT" "AFMT"
演奏時間(※1) "TIME" "TIME" "TIME" "TIME"
タイトル "INAM_v1" "INAM_v2" "INAM_rmp" "INAM_APE"
アーティスト "IART_v1" "IART_v2" "IART_rmp" "IART_APE"
アルバム "IPRD_v1" "IPRD_v2" "IPRD_rmp" "IPRD_APE"
コメント "ICMT_v1" "ICMT_v2" "ICMT_rmp" "ICMT_APE"
作成日 "ICRD_v1" "ICRD_v2" "ICRD_rmp" "ICRD_APE"
ジャンル "IGNR_v1" "IGNR_v2" "IGNR_rmp" "IGNR_APE"
(ID3v2/RiffSIF)
著作権 "ICOP_v2" "ICOP_rmp"
ソフトウェア/エンコーダ "ISFT_v2" "ISFT_rmp"
(ID3v2)
作曲 "COMP_v2"
Orig.アーティスト "OART_v2"
URL "URL_v2"
エンコードした人 "ENC2_v2"
(RiffSIF)
ソース "ISRC_rmp"
エンジニア "IENG_rmp"
(ID3v1/2)
トラック番号 "TRACK_v1" "TRACK_v2" "TRACK_APE"
[WAV]
フォーマット(※1) "AFMT"
演奏時間(※1) "TIME"
タイトル(※2) "INAM"
タイトル(※2) "ISBJ"
アーティスト "IART"
アルバム "IPRD"
コメント "ICMT"
作成日 "ICRD"
ジャンル "IGNR"
著作権 "ICOP"
ソフトウェア "ISFT"
ソース "ISRC"
エンジニア "IENG"
[AVI]
音声フォーマット(※1) "AFMT"
映像フォーマット(※1) "VFMT"
時間(※1) "TIME"
タイトル(※2) "INAM"
タイトル(※2) "ISBJ"
アーティスト "IART"
コメント "ICMT"
作成日 "ICRD"
ジャンル "IGNR"
著作権 "ICOP"
ソフトウェア "ISFT"
ソース "ISRC"
エンジニア "IENG"
AVIバージョン "AVIV" (v2.37〜)
[VQF]
フォーマット(※1) "AFMT"
演奏時間(※1) "TIME"
タイトル "INAM"
アーティスト "IART"
コメント "ICMT"
著作権 "ICOP"
保存名
"FILE"
[WMA]
音声フォーマット(※1) "AFMT"
映像フォーマット(※1) "VFMT"
時間(※1) "TIME"
タイトル
"INAM"
トラック "TRACK"
アーティスト "IART"
アルバム "IPRD"
コメント "ICMT"
作成日 "ICRD"
ジャンル "IGNR"
著作権 "ICOP"
URL(Album) "URL1"
URL(関連) "URL2"
[OGG]
フォーマット(※1) "AFMT"
演奏時間(※1) "TIME"
タイトル "INAM"
アーティスト "IART"
アルバム "IPRD"
コメント "ICMT"
作成日 "ICRD"
ジャンル "IGNR"
トラック番号 "TRACK"
[APE]
フォーマット(※1) "AFMT"
演奏時間(※1) "TIME"
タイトル "INAM"
アーティスト "IART"
アルバム "IPRD"
コメント "ICMT"
作成日 "ICRD"
ジャンル "IGNR"
トラック番号 "TRACK"
[MP4] (v2.53〜)
音声フォーマット(※1) "AFMT"
映像フォーマット(※1) "VFMT"
タイトル "INAM"
アーティスト "IART"
アルバム "IPRD"
グループ "IGRP"
作曲 "COMPOSER"
ジャンル "IGNR"
トラック番号1 "TRACK1" (1以上の数値)
トラック番号2 "TRACK2" (1以上の数値)
ディスク番号1 "DISC1" (1以上の数値)
ディスク番号2 "DISC2" (1以上の数値)
テンポ "BPM" (数値)
作成日 "ICRD" (4桁の数値 例:"2004")
コンピレーション "COMPILATION"
("1" or "0")
コメント "ICMT"
ツール "TOOL"
(※1)mp3infp_SetValue()では利用できません。
(※2)mp3infpではロード時にINAMを優先、無ければISBJを表示。セーブ時にはISBJを削除、INAMを保存します。
}
const
MP3INFP_FILE_UNKNOWN = $00;
MP3INFP_FILE_MP3 = $01;
MP3INFP_FILE_WAV = $02;
MP3INFP_FILE_AVI = $03;
MP3INFP_FILE_VQF = $04;
MP3INFP_FILE_WMA = $05;
MP3INFP_FILE_OGG = $07;
MP3INFP_FILE_APE = $08;
MP3INFP_FILE_MP4 = $09;
{=======================================================================================
名前: mp3infp_GetType
概要: ファイルの種類を取得する
補足: mp3infp_Load()の後に呼び出してください
引数: なし
戻値: DWORD
#define MP3INFP_FILE_UNKNOWN 0x00
#define MP3INFP_FILE_MP3 0x01
#define MP3INFP_FILE_WAV 0x02
#define MP3INFP_FILE_AVI 0x03
#define MP3INFP_FILE_VQF 0x04
#define MP3INFP_FILE_WMA 0x05
#define MP3INFP_FILE_OGG 0x07
#define MP3INFP_FILE_APE 0x08
対応: Ver2.26〜
#define MP3INFP_FILE_MP4 0x09
対応: Ver2.53〜
}
function mp3infp_GetType: DWORD;
stdcall external 'mp3infp.dll';
{=======================================================================================
名前: mp3infp_GetValue
概要: タグ情報を取得する
補足: mp3infp_Load()の後に呼び出してください
引数:
IN const char *szValueName
タグの種類を示す名前(表1を参照)
OUT char **buf
タグ情報を示すバッファのポインタを受け取るポインタ
戻値: BOOL 成功=TRUE/失敗=FALSE
対応: Ver2.26〜
}
function mp3infp_GetValue(
const szValueName: PChar; buf: PPChar): BOOL;
stdcall external 'mp3infp.dll';
const
MP3INFP_HAS_MP3_ID3V1 = $00000001;
MP3INFP_HAS_MP3_ID3V2 = $00000002;
MP3INFP_HAS_MP3_RIFFSIF = $00000004;
MP3INFP_HAS_MP3_ID3V1_0 = $00000008;
// v2.43〜
MP3INFP_HAS_MP3_ID3V1_1 = $00000010;
// v2.43〜
MP3INFP_HAS_MP3_ID3V2_2 = $00000020;
// v2.43〜
MP3INFP_HAS_MP3_ID3V2_3 = $00000040;
// v2.43〜
MP3INFP_HAS_MP3_ID3V2_4 = $00000080;
// v2.43〜
MP3INFP_HAS_MP3_APEV1 = $00000100;
// v2.47〜
MP3INFP_HAS_MP3_APEV2 = $00000200;
// v2.47〜
{=======================================================================================
名前: mp3infp_mp3_GetTagType
概要: mp3が持っているタグの種類を取得する
補足: mp3infp_Load()の後に呼び出してください
引数: なし
戻値: DWORD (OR)
#define MP3INFP_HAS_MP3_ID3V1 0x00000001
#define MP3INFP_HAS_MP3_ID3V2 0x00000002
#define MP3INFP_HAS_MP3_RIFFSIF 0x00000004
#define MP3INFP_HAS_MP3_ID3V1_0 0x00000008 // v2.43〜
#define MP3INFP_HAS_MP3_ID3V1_1 0x00000010 // v2.43〜
#define MP3INFP_HAS_MP3_ID3V2_2 0x00000020 // v2.43〜
#define MP3INFP_HAS_MP3_ID3V2_3 0x00000040 // v2.43〜
#define MP3INFP_HAS_MP3_ID3V2_4 0x00000080 // v2.43〜
#define MP3INFP_HAS_MP3_APEV1 0x00000100 // v2.47〜
#define MP3INFP_HAS_MP3_APEV2 0x00000200 // v2.47〜
対応: Ver2.27〜
}
function mp3infp_mp3_GetTagType: DWORD;
stdcall external 'mp3infp.dll';
{=======================================================================================
名前: mp3infp_SetConf
概要: mp3infpの動作設定
引数: IN char *tag 設定項目(表2参照)
IN char *val 設定値(表2参照)
戻値: BOOL 成功=TRUE/失敗=FALSE
対応: Ver2.42〜
補足: ・他のプロセスのmp3infp.dll/シェル拡張のmp3infpには影響しない
・設定内容は保存されない
}
function mp3infp_SetConf(tag: PChar; value: PChar): BOOL;
stdcall external 'mp3infp.dll';
{=======================================================================================
////////////////////////////////////////////////////////////////////
mp3infp_SetConf()指定する設定項目・値一覧
////////////////////////////////////////////////////////////////////
[Waveファイルのコーデック名称の取得方法](Ver2.42〜)
(項目名)
"wave_CodecFind"
(値)
"0"(default) mp3infp内蔵辞書 → Windows APIを利用の順で検索(高速)
"1" Windows APIを利用 → 自力解析の順で検索(低速)
"2" mp3infp内蔵辞書(高速)
"3" Windows APIを利用(低速)
[Aviファイルのコーデック名称の取得方法](Ver2.42〜)
(項目名)
"avi_CodecFind"
(値)
"0"(default) mp3infp内蔵辞書 → Windows APIを利用の順で検索(高速)
"1" Windows APIを利用 → 自力解析の順で検索(低速)
"2" mp3infp内蔵辞書(高速)
"3" Windows APIを利用(低速)
[ID3v1で拡張ジャンルを使用する](Ver2.43〜)
(項目名)
"mp3_UseExtGenre"
(値)
"0"(default) 無効
"1" 有効
[ID3v2で文字列をUnicodeで書き込む](Ver2.43〜)
(項目名)
"mp3_ID3v2Unicode"
(値)
"0"(default) 無効
"1" 有効
[ID3v2を非同期化する](Ver2.43〜)
(項目名)
"mp3_ID3v2Unsync"
(値)
"0" 無効
"1"(default) 有効
[保存時のID3v2バージョン](Ver2.43〜)
※この設定値はmp3infp_Load()の実行によって上書きされます。
(項目名)
"mp3_SaveID3v2Version"
(値)
"2.2" ID3v2.2
"2.3"(default) ID3v2.3
"2.4" ID3v2.4
}
{=======================================================================================
名前: mp3infp_SetValue
概要: タグ情報を設定する
補足: mp3infp_Load()の後に呼び出してください
引数:
IN const char *szValueName
タグの種類を示す名前(表1を参照)
IN const char *buf
タグ情報を示す文字列
戻値: DWORD
-1=失敗
ERROR_SUCCESS=成功
対応: Ver.2.43〜
}
function mp3infp_SetValue(
const szValueName: PChar;
const buf: PChar): DWORD;
stdcall external 'mp3infp.dll';
{=======================================================================================
名前: mp3infp_Save
概要: タグ情報を保存する
補足: mp3infp_Load()の後に呼び出してください
引数: IN const char *szFileName 対象ファイル名をフルパスで指定。
戻値: DWORD
-1=失敗
-2=2Gバイトを超えるファイルを扱うことはできません。(WAVファイルのみ)
ERROR_SUCCESS=成功
(その他)=Win32エラーコード (FormatMessageで文字列を取得できる)
対応: Ver.2.43〜
}
function mp3infp_Save(
const szFileName: PChar): DWORD;
stdcall external 'mp3infp.dll';
{=======================================================================================
名前: mp3infp_mp3_MakeId3v1
概要: ID3TAG V1を作成する
補足: mp3infp_Load()の後に呼び出してください
変更は直ちに反映されます
mp3ファイルにのみ利用してください(wavファイルは対象外)
引数: IN char *szFileName 対象ファイル名をフルパスで指定。
戻値: DWORD
-1=失敗
ERROR_SUCCESS=成功
(その他)=Win32エラーコード (FormatMessageで文字列を取得できる)
対応: Ver.2.43〜
}
function mp3infp_mp3_MakeId3v1(
const szFileName: PChar): DWORD;
stdcall external 'mp3infp.dll';
{=======================================================================================
名前: mp3infp_mp3_DelId3v1
概要: ID3TAG V1を削除する
補足: mp3infp_Load()の後に呼び出してください
変更は直ちに反映されます
mp3ファイルにのみ利用してください(wavファイルは対象外)
引数: IN char *szFileName 対象ファイル名をフルパスで指定。
戻値: DWORD
-1=失敗
ERROR_SUCCESS=成功
(その他)=Win32エラーコード (FormatMessageで文字列を取得できる)
対応: Ver.2.43〜
}
function mp3infp_mp3_DelId3v1(
const szFileName: PChar): DWORD;
stdcall external 'mp3infp.dll';
{=======================================================================================
名前: mp3infp_mp3_MakeId3v2
概要: ID3TAG V2を作成する
補足: mp3infp_Load()の後に呼び出してください
変更は直ちに反映されます
mp3ファイルにのみ利用してください(wavファイルは対象外)
引数: IN char *szFileName 対象ファイル名をフルパスで指定。
戻値: DWORD
-1=失敗
ERROR_SUCCESS=成功
(その他)=Win32エラーコード (FormatMessageで文字列を取得できる)
対応: Ver.2.43〜
}
function mp3infp_mp3_MakeId3v2(
const szFileName: PChar): DWORD;
stdcall external 'mp3infp.dll';
{=======================================================================================
名前: mp3infp_mp3_DelId3v2
概要: ID3TAG V2を削除する
補足: mp3infp_Load()の後に呼び出してください
変更は直ちに反映されます
mp3ファイルにのみ利用してください(wavファイルは対象外)
引数: IN char *szFileName 対象ファイル名をフルパスで指定。
戻値: DWORD
-1=失敗
ERROR_SUCCESS=成功
(その他)=Win32エラーコード (FormatMessageで文字列を取得できる)
対応: Ver.2.43〜
}
function mp3infp_mp3_DelId3v2(
const szFileName: PChar): DWORD;
stdcall external 'mp3infp.dll';
{=======================================================================================
名前: mp3infp_mp3_MakeRMP
概要: mp3形式からRMP形式に変換する
補足: mp3infp_Load()の後に呼び出してください
変更は直ちに反映されます
mp3ファイルにのみ利用してください(wavファイルは対象外)
引数: IN char *szFileName 対象ファイル名をフルパスで指定。
戻値: DWORD
-1=失敗
ERROR_SUCCESS=成功
(その他)=Win32エラーコード (FormatMessageで文字列を取得できる)
対応: Ver.2.43〜
}
function mp3infp_mp3_MakeRMP(
const szFileName: PChar): DWORD;
stdcall external 'mp3infp.dll';
{=======================================================================================
名前: mp3infp_mp3_DelRMP
概要: RMP形式からmp3形式に変換する
補足: mp3infp_Load()の後に呼び出してください
変更は直ちに反映されます
mp3ファイルにのみ利用してください(wavファイルは対象外)
引数: IN char *szFileName 対象ファイル名をフルパスで指定。
戻値: DWORD
-1=失敗
ERROR_SUCCESS=成功
(その他)=Win32エラーコード (FormatMessageで文字列を取得できる)
対応: Ver.2.43〜
}
function mp3infp_mp3_DelRMP(
const szFileName: PChar): DWORD;
stdcall external 'mp3infp.dll';
{=======================================================================================
名前: mp3infp_mp3_MakeApeTag
概要: APE Tagを作成する
補足: mp3infp_Load()の後に呼び出してください
変更は直ちに反映されます
mp3ファイルにのみ利用してください(wavファイルは対象外)
引数: IN char *szFileName 対象ファイル名をフルパスで指定。
戻値: DWORD
-1=失敗
ERROR_SUCCESS=成功
(その他)=Win32エラーコード (FormatMessageで文字列を取得できる)
対応: Ver.2.47〜
}
function mp3infp_mp3_MakeApeTag(
const szFileName: PChar): DWORD;
stdcall external 'mp3infp.dll';
{=======================================================================================
名前: mp3infp_mp3_DelApeTag
概要: APE Tagを削除する
補足: mp3infp_Load()の後に呼び出してください
変更は直ちに反映されます
mp3ファイルにのみ利用してください(wavファイルは対象外)
引数: IN char *szFileName 対象ファイル名をフルパスで指定。
戻値: DWORD
-1=失敗
ERROR_SUCCESS=成功
(その他)=Win32エラーコード (FormatMessageで文字列を取得できる)
対応: Ver.2.47〜
}
function mp3infp_mp3_DelApeTag(
const szFileName: PChar): DWORD;
stdcall external 'mp3infp.dll';
implementation
end.