?? tagsdll.txt
字號:
unit CST_WMA_Utils;
interface
uses
Windows, SysUtils, Dialogs;
type
TTagsData = packed record
Encoder, Version, Genre, Author, Title, Album,
Composer, Url, Track, Year, CopyRight: string[255];
Comments, Lyrics: WideString;
Duration, BitRate, FileSize: LongInt;
VBR: Boolean;
end;
PTagsData = ^TTagsData;
var
ShowTags: function(var FileName: PWideChar; var TagsData: PTagsData): Boolean; stdcall;
SaveTags: function(var FileName: PWideChar; var TagsData: PTagsData): Boolean; stdcall;
TagDLL_Handle: THandle = 0;
function LoadWMATagDataDLL: boolean;
procedure FreeWMATagDataDLL;
function IsTagDataDLLLoaded: boolean;
function DurationToStr(Duration: integer; ShowMs: boolean): string;
function ProgDir: string;
implementation
procedure FreeWMATagDataDLL;
begin
if (TagDLL_Handle <> 0) then begin
FreeLibrary(TagDLL_Handle);
TagDLL_Handle := 0;
end;
end;
function LoadWMATagDataDLL: boolean;
var oldmode: integer;
begin
if TagDLL_Handle <> 0 then Result := true //(is it allready here)
else begin
oldmode := SetErrorMode($8001);
TagDLL_Handle := LoadLibrary(PChar(progdir+'MetaData.dll'));
SetErrormode(oldMode);
if TagDLL_Handle <> 0 then
begin
@ShowTags := GetProcAddress(TagDLL_Handle, 'ShowTags');
@SaveTags := GetProcAddress(TagDLL_Handle, 'SaveTags');
if (@ShowTags = nil) or
(@SaveTags = nil)
then begin
FreeLibrary(TagDLL_Handle);
TagDLL_Handle := 0;
end;
end;
Result := (TagDLL_Handle <> 0);
end;
end;
function IsTagDataDLLLoaded: boolean;
begin
Result := (TagDLL_Handle <> 0) or (@ShowTags <> nil) or (@SaveTags <> nil);
end;
function DurationToStr(Duration: integer; ShowMs: boolean): string;
begin
if ShowMs then
Result := Format('%d:%2.2d,%3.3d', [(Abs(Duration div 60)), Abs(Duration mod 60), Abs(Duration mod 1000)])
else
Result := Format('%d:%2.2d', [(Abs(Duration div 60)), Abs(Duration mod 60)]);
end;
function ProgDir: string;
begin
Result := ExtractFilePath(ParamStr(0));
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -