⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msacm.pas

📁 完美acm语音(audio)delphi开发控件: znACM ver5.1 完美的封装了微软的 acm 语音相关的函数
💻 PAS
📖 第 1 页 / 共 3 页
字号:
	end;

type
	PACMFILTERDETAILSW = ^TACMFILTERDETAILSW;
	TACMFILTERDETAILSW = packed record
		cbStruct      : DWORD           ;
		dwFilterIndex : DWORD           ;
		dwFilterTag   : DWORD           ;
		fdwSupport    : DWORD           ;
		pwfltr        : PWAVEFILTER     ;
		cbwfltr       : DWORD           ;
		szFilter      : array[0..ACMFILTERDETAILS_FILTER_CHARS-1] of wchar;
	end;

type
	PACMFILTERDETAILS = PACMFILTERDETAILSA;
	TACMFILTERDETAILS = TACMFILTERDETAILSA;

function acmFilterDetailsA(had : HACMDRIVER; var pafd : TACMFILTERDETAILSA; fdwDetails : DWORD) : MMRESULT; stdcall;

function acmFilterDetailsW(had : HACMDRIVER; var pafd : TACMFILTERDETAILSW; fdwDetails : DWORD) : MMRESULT; stdcall;

function acmFilterDetails(had : HACMDRIVER; var pafd : TACMFILTERDETAILS; fdwDetails : DWORD) : MMRESULT; stdcall;

const
	ACM_FILTERDETAILSF_INDEX        = $00000000;
	ACM_FILTERDETAILSF_FILTER       = $00000001;
	ACM_FILTERDETAILSF_QUERYMASK    = $0000000F;

type
	ACMFILTERENUMCBA = function(hadid : HACMDRIVERID; const pafd : TACMFILTERDETAILSA; dwInstance : DWORD; fdwSupport : DWORD) : BOOL; stdcall;

function acmFilterEnumA(had : HACMDRIVER; var pafd : TACMFILTERDETAILSA; fnCallback : ACMFILTERENUMCBA; dwInstance : DWORD; fdwEnum : DWORD) : MMRESULT; stdcall;

type
	ACMFILTERENUMCBW = function(hadid : HACMDRIVERID; const pafd : TACMFILTERDETAILSW; dwInstance : DWORD; fdwSupport : DWORD) : BOOL; stdcall;

function acmFilterEnumW(had : HACMDRIVER; var pafd : TACMFILTERDETAILSW; fnCallback : ACMFILTERENUMCBW; dwInstance : DWORD; fdwEnum : DWORD) : MMRESULT; stdcall;

type
	ACMFILTERENUMCB = ACMFILTERENUMCBA;

function acmFilterEnum(had : HACMDRIVER; var pafd : TACMFILTERDETAILS; fnCallback : ACMFILTERENUMCB; dwInstance : DWORD; fdwEnum : DWORD) : MMRESULT; stdcall;

const
	ACM_FILTERENUMF_DWFILTERTAG         = $00010000;

const
	MM_ACM_FILTERCHOOSE             = ($8000);

	FILTERCHOOSE_MESSAGE            = 0;
	FILTERCHOOSE_FILTERTAG_VERIFY   = (FILTERCHOOSE_MESSAGE+0);
	FILTERCHOOSE_FILTER_VERIFY      = (FILTERCHOOSE_MESSAGE+1);
	FILTERCHOOSE_CUSTOM_VERIFY      = (FILTERCHOOSE_MESSAGE+2);

type
	ACMFILTERCHOOSEHOOKPROCA = function(hwnd : HWND; uMsg : UINT; wParam : WPARAM; lParam : LPARAM) : UINT; stdcall;

type
	ACMFILTERCHOOSEHOOKPROCW = function(hwnd : HWND; uMsg : UINT; wParam : WPARAM; lParam : LPARAM) : UINT; stdcall;

type
	ACMFILTERCHOOSEHOOKPROC = ACMFILTERCHOOSEHOOKPROCA;

type
	PACMFILTERCHOOSEA = ^TACMFILTERCHOOSEA;
	TACMFILTERCHOOSEA = packed record
		cbStruct        : DWORD           ;            // sizeof(ACMFILTERCHOOSE)
		fdwStyle        : DWORD           ;            // chooser style flags

		hwndOwner       : HWND            ;            // caller's window handle

		pwfltr          : PWAVEFILTER     ;            // ptr to wfltr buf to receive choice
		cbwfltr         : DWORD           ;            // size of mem buf for pwfltr

		pszTitle        : LPCSTR          ;

		szFilterTag     : array[0..ACMFILTERTAGDETAILS_FILTERTAG_CHARS-1] of char;
		szFilter        : array[0..ACMFILTERDETAILS_FILTER_CHARS-1] of char;
		pszName         : LPSTR           ;            // custom name selection
		cchName         : DWORD           ;            // size in chars of mem buf for pszName

		fdwEnum         : DWORD           ;            // filter enumeration restrictions
		pwfltrEnum      : PWAVEFILTER     ;            // filter describing restrictions

		hInstance       : THandle         ;            // app instance containing dlg template
		pszTemplateName : LPCSTR          ;            // custom template name
		lCustData       : LPARAM          ;            // data passed to hook fn.
		pfnHook         : ACMFILTERCHOOSEHOOKPROCA ;   // ptr to hook function
	end;

type
	PACMFILTERCHOOSEW = ^TACMFILTERCHOOSEW;
	TACMFILTERCHOOSEW = packed record
		cbStruct        : DWORD           ;            // sizeof(ACMFILTERCHOOSE)
		fdwStyle        : DWORD           ;            // chooser style flags

		hwndOwner       : HWND            ;            // caller's window handle

		pwfltr          : PWAVEFILTER     ;            // ptr to wfltr buf to receive choice
		cbwfltr         : DWORD           ;            // size of mem buf for pwfltr

		pszTitle        : LPCWSTR         ;

		szFilterTag     : array[0..ACMFILTERTAGDETAILS_FILTERTAG_CHARS-1] of wchar;
		szFilter        : array[0..ACMFILTERDETAILS_FILTER_CHARS-1] of wchar;
		pszName         : LPWSTR          ;            // custom name selection
		cchName         : DWORD           ;            // size in chars of mem buf for pszName

		fdwEnum         : DWORD           ;            // filter enumeration restrictions
		pwfltrEnum      : PWAVEFILTER     ;            // filter describing restrictions

		hInstance       : THandle         ;            // app instance containing dlg template
		pszTemplateName : LPCWSTR         ;            // custom template name
		lCustData       : LPARAM          ;            // data passed to hook fn.
		pfnHook         : ACMFILTERCHOOSEHOOKPROCW ;   // ptr to hook function
	end;

type
	PACMFILTERCHOOSE = PACMFILTERCHOOSEA;
	TACMFILTERCHOOSE = TACMFILTERCHOOSEA;

const
	ACMFILTERCHOOSE_STYLEF_SHOWHELP              = $00000004;
	ACMFILTERCHOOSE_STYLEF_ENABLEHOOK            = $00000008;
	ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATE        = $00000010;
	ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATEHANDLE  = $00000020;
	ACMFILTERCHOOSE_STYLEF_INITTOFILTERSTRUCT    = $00000040;
	ACMFILTERCHOOSE_STYLEF_CONTEXTHELP           = $00000080;

function acmFilterChooseA(var pafltrc : TACMFILTERCHOOSEA) : MMRESULT; stdcall;

function acmFilterChooseW(var pafltrc : TACMFILTERCHOOSEW) : MMRESULT; stdcall;

function acmFilterChoose(var pafltrc : TACMFILTERCHOOSE) : MMRESULT; stdcall;

type
	PACMSTREAMHEADER = ^TACMSTREAMHEADER;
	TACMSTREAMHEADER = packed record
		cbStruct         : DWORD           ;              // sizeof(ACMSTREAMHEADER)
		fdwStatus        : DWORD           ;              // ACMSTREAMHEADER_STATUSF_*
		dwUser           : DWORD           ;              // user instance data for hdr
		pbSrc            : PBYTE           ;
		cbSrcLength      : DWORD           ;
		cbSrcLengthUsed  : DWORD           ;
		dwSrcUser        : DWORD           ;              // user instance data for src
		pbDst            : PBYTE           ;
		cbDstLength      : DWORD           ;
		cbDstLengthUsed  : DWORD           ;
		dwDstUser        : DWORD           ;              // user instance data for dst
		dwReservedDriver : array [0..9] of DWORD;         // driver reserved work space
	end;

const
	ACMSTREAMHEADER_STATUSF_DONE     = $00010000;
	ACMSTREAMHEADER_STATUSF_PREPARED = $00020000;
	ACMSTREAMHEADER_STATUSF_INQUEUE  = $00100000;

function acmStreamOpen(phas : PHACMSTREAM; had : HACMDRIVER; const pwfxSrc : TWAVEFORMATEX; const pwfxdst : TWAVEFORMATEX; pwfltr : PWAVEFILTER; dwCallback : DWORD; dwInstance : DWORD; fdwOpen : DWORD) : MMRESULT; stdcall;

const
	ACM_STREAMOPENF_QUERY           = $00000001;
	ACM_STREAMOPENF_ASYNC           = $00000002;
	ACM_STREAMOPENF_NONREALTIME     = $00000004;

function acmStreamClose(has : HACMSTREAM; fdwClose : DWORD) : MMRESULT; stdcall;

function acmStreamSize(has : HACMSTREAM; cbInput : DWORD; var pdwOutputByte : DWORD; fdwSize : DWORD) : MMRESULT; stdcall;

const
	ACM_STREAMSIZEF_SOURCE          = $00000000;
	ACM_STREAMSIZEF_DESTINATION     = $00000001;
	ACM_STREAMSIZEF_QUERYMASK       = $0000000F;

function acmStreamReset(has : HACMSTREAM; fdwReset : DWORD) : MMRESULT; stdcall;

function acmStreamMessage(has : HACMSTREAM; uMsg : UINT; lParam1 : LPARAM; lParam2 : LPARAM) : MMRESULT; stdcall;

function acmStreamConvert(has : HACMSTREAM; var pash : TACMSTREAMHEADER; fdwConvert : DWORD) : MMRESULT; stdcall;

const
	ACM_STREAMCONVERTF_BLOCKALIGN   = $00000004;
	ACM_STREAMCONVERTF_START        = $00000010;
	ACM_STREAMCONVERTF_END          = $00000020;

function acmStreamPrepareHeader(has : HACMSTREAM; var pash : TACMSTREAMHEADER; fdwPrepare : DWORD) : MMRESULT; stdcall;

function acmStreamUnprepareHeader(has : HACMSTREAM; var pash : TACMSTREAMHEADER; fdwUnprepare : DWORD) : MMRESULT; stdcall;

implementation

const
	msacm32 = 'msacm32.dll';

// acm

function acmGetVersion; external msacm32 name 'acmGetVersion';
function acmMetrics; external msacm32 name 'acmMetrics';

// acmDriver

function acmDriverEnum; external msacm32 name 'acmDriverEnum';
function acmDriverID; external msacm32 name 'acmDriverID';

function acmDriverAddA; external msacm32 name 'acmDriverAddA';
function acmDriverAddW; external msacm32 name 'acmDriverAddW';
function acmDriverAdd; external msacm32 name 'acmDriverAddA';

function acmDriverRemove; external msacm32 name 'acmDriverRemove';
function acmDriverOpen; external msacm32 name 'acmDriverOpen';
function acmDriverClose; external msacm32 name 'acmDriverClose';
function acmDriverMessage; external msacm32 name 'acmDriverMessage';
function acmDriverPriority; external msacm32 name 'acmDriverPriority';

function ACMDRIVERDETAILS_FCCTYPE_AUDIOCODE : FOURCC;
begin
	Result := MMSystem.mmioStringToFOURCC('audc', 0);
end;

function acmDriverDetailsA; external msacm32 name 'acmDriverDetailsA';
function acmDriverDetailsW; external msacm32 name 'acmDriverDetailsW';
function acmDriverDetails; external msacm32 name 'acmDriverDetailsA';

// acmFormat

function acmFormatTagDetailsA; external msacm32 name 'acmFormatTagDetailsA';
function acmFormatTagDetailsW; external msacm32 name 'acmFormatTagDetailsW';
function acmFormatTagDetails; external msacm32 name 'acmFormatTagDetailsA';

function acmFormatTagEnumA; external msacm32 name 'acmFormatTagEnumA';
function acmFormatTagEnumW; external msacm32 name 'acmFormatTagEnumW';
function acmFormatTagEnum; external msacm32 name 'acmFormatTagEnumA';

function acmFormatDetailsA; external msacm32 name 'acmFormatDetailsA';
function acmFormatDetailsW; external msacm32 name 'acmFormatDetailsW';
function acmFormatDetails; external msacm32 name 'acmFormatDetailsA';

function acmFormatEnumA; external msacm32 name 'acmFormatEnumA';
function acmFormatEnumW; external msacm32 name 'acmFormatEnumW';
function acmFormatEnum; external msacm32 name 'acmFormatEnumA';

function acmFormatSuggest; external msacm32 name 'acmFormatSuggest';

function acmFormatChooseA; external msacm32 name 'acmFormatChooseA';
function acmFormatChooseW; external msacm32 name 'acmFormatChooseW';
function acmFormatChoose; external msacm32 name 'acmFormatChooseA';

// acmFilter

function acmFilterTagDetailsA; external msacm32 name 'acmFilterTagDetailsA';
function acmFilterTagDetailsW; external msacm32 name 'acmFilterTagDetailsW';
function acmFilterTagDetails; external msacm32 name 'acmFilterTagDetailsA';

function acmFilterTagEnumA; external msacm32 name 'acmFilterTagEnumA';
function acmFilterTagEnumW; external msacm32 name 'acmFilterTagEnumW';
function acmFilterTagEnum; external msacm32 name 'acmFilterTagEnumA';

function acmFilterDetailsA; external msacm32 name 'acmFilterDetailsA';
function acmFilterDetailsW; external msacm32 name 'acmFilterDetailsW';
function acmFilterDetails; external msacm32 name 'acmFilterDetailsA';

function acmFilterEnumA; external msacm32 name 'acmFilterEnumA';
function acmFilterEnumW; external msacm32 name 'acmFilterEnumW';
function acmFilterEnum; external msacm32 name 'acmFilterEnumA';

function acmFilterChooseA; external msacm32 name 'acmFilterChooseA';
function acmFilterChooseW; external msacm32 name 'acmFilterChooseW';
function acmFilterChoose; external msacm32 name 'acmFilterChooseA';

// acmStream

function acmStreamOpen; external msacm32 name 'acmStreamOpen';
function acmStreamClose; external msacm32 name 'acmStreamClose';
function acmStreamSize; external msacm32 name 'acmStreamSize';
function acmStreamReset; external msacm32 name 'acmStreamReset';
function acmStreamMessage; external msacm32 name 'acmStreamMessage';
function acmStreamConvert; external msacm32 name 'acmStreamConvert';
function acmStreamPrepareHeader; external msacm32 name 'acmStreamPrepareHeader';
function acmStreamUnprepareHeader; external msacm32 name 'acmStreamUnprepareHeader';

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -