最近要寫個小程式, 用到 mp3 播放; 因為需要非常複雜的控制與功能, 想到了 Bass.dll.
以前我曾以為 Bass.dll 是 Windows 系統內建的庫, 後來才知道原來是第三方的: http://www.un4seen.com/.
Bass.dll 一直在更新, 現在最新版本是 2.411, : http://us2.un4seen.com/files/bass24.zip
在 Delphi 中使用前, 有三步工作要做:
1、複製 Bass.dll 到系統可以識別的檔案夾, 譬如: Windows\System32、Windows、Windows\System, 也可以是系統或使用者的環境變數 Path 指定的任何目錄, 還可以在做程式時放在目前的目錄, 隨便放一個檔案夾然後在程式中指定路徑也可以.
2、把專為 Delphi 寫的標頭檔 bass.pas 放在某個目錄(譬如: C:\Program Files\CodeGear\RAD Studio\6.0\Imports\Bass24).
3、然後從 Delphi 菜單 -> Tools -> Options -> Library-Win32 -> Library path -> 然後 Add 這個目錄 (例子).
好了, 寫幾句測試一下:
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); end;var Form1: TForm1;implementation{$R *.dfm}uses Bass;procedure TForm1.FormCreate(Sender: TObject);begin ShowMessageFmt('%x', [BASSVERSION]); {204} ShowMessageFmt('%x', [BASS_GetVersion]); {2040101} if HiWord(BASS_GetVersion) BASSVERSION then ShowMessage('當前 Bass.dll 版本不可用') else ShowMessage('OK!');end;end.
程式說明:
在使用 Bass 前, 一般要先驗證版本(因為不同版本功能有區別);
BASS_GetVersion 函數可以擷取系統中 Bass.dll 的版本號碼, 這裡是: $2040101(十六進位數);
BASSVERSION 是 Bass.pas 中的常量, 表示 Bass.pas 檔案的版本, 這裡是 $204;
只要主要版本號(譬如2.4)統一即可, 我們可以用 HiWord 函數 從
BASS_GetVersion 函數的傳回值中提前主要版本號和 BASSVERSION 對比.
先博覽一下 Bass 為我們提供的函數:
BASS_Apply3DBASS_ChannelBytes2SecondsBASS_ChannelFlagsBASS_ChannelGet3DAttributesBASS_ChannelGet3DPositionBASS_ChannelGetAttributeBASS_ChannelGetDataBASS_ChannelGetDeviceBASS_ChannelGetInfoBASS_ChannelGetLengthBASS_ChannelGetLevelBASS_ChannelGetPositionBASS_ChannelGetTagsBASS_ChannelIsActiveBASS_ChannelIsSlidingBASS_ChannelLockBASS_ChannelPauseBASS_ChannelPlayBASS_ChannelRemoveDSPBASS_ChannelRemoveFXBASS_ChannelRemoveLinkBASS_ChannelRemoveSyncBASS_ChannelSeconds2BytesBASS_ChannelSet3DAttributesBASS_ChannelSet3DPositionBASS_ChannelSetAttributeBASS_ChannelSetDeviceBASS_ChannelSetDSPBASS_ChannelSetFXBASS_ChannelSetLinkBASS_ChannelSetPositionBASS_ChannelSetSyncBASS_ChannelSlideAttributeBASS_ChannelStopBASS_ChannelUpdateBASS_ErrorGetCodeBASS_FreeBASS_FXGetParametersBASS_FXResetBASS_FXSetParametersBASS_Get3DFactorsBASS_Get3DPositionBASS_GetConfigBASS_GetConfigPtrBASS_GetCPUBASS_GetDeviceBASS_GetDeviceInfoBASS_GetDSoundObjectBASS_GetEAXParametersBASS_GetInfoBASS_GetVersionBASS_GetVolumeBASS_InitBASS_MusicFreeBASS_MusicLoadBASS_PauseBASS_PluginFreeBASS_PluginGetInfoBASS_PluginLoadBASS_RecordFreeBASS_RecordGetDeviceBASS_RecordGetDeviceInfoBASS_RecordGetInfoBASS_RecordGetInputBASS_RecordGetInputNameBASS_RecordInitBASS_RecordSetDeviceBASS_RecordSetInputBASS_RecordStartBASS_SampleCreateBASS_SampleFreeBASS_SampleGetChannelBASS_SampleGetChannelsBASS_SampleGetDataBASS_SampleGetInfoBASS_SampleLoadBASS_SampleSetDataBASS_SampleSetInfoBASS_SampleStopBASS_Set3DFactorsBASS_Set3DPositionBASS_SetConfigBASS_SetConfigPtrBASS_SetDeviceBASS_SetEAXParametersBASS_SetVolumeBASS_StartBASS_StopBASS_StreamCreateBASS_StreamCreateFileBASS_StreamCreateFileUserBASS_StreamCreateURLBASS_StreamFreeBASS_StreamGetFilePositionBASS_StreamPutDataBASS_StreamPutFileDataBASS_Update