是否有允许以下操作的组件或代码: 录制口语单词(或单词)并将其/它们保存到可以播放的文件中。该文件必须能够在 XP、Vista 和 Windows 7 上播放。该文件可以是独立的,也可以保存到数据源中。
[使用 Delphi 7 在 XP 上创建应用程序并使用绝对数据库。]
是否有允许以下操作的组件或代码: 录制口语单词(或单词)并将其/它们保存到可以播放的文件中。该文件必须能够在 XP、Vista 和 Windows 7 上播放。该文件可以是独立的,也可以保存到数据源中。
[使用 Delphi 7 在 XP 上创建应用程序并使用绝对数据库。]
MMSystem.pas 中的函数允许您使用 Windows API 执行此操作。您可以使用高级函数,例如MCI 函数和PlaySound,也可以使用低级函数,例如waveInOpen、waveInPrepareHeader、waveInProc等。
如果你想要高控制,你真的应该使用低级功能。除了PlaySound,我没用过高级MCI接口。
这是工作代码:
procedure TForm1.FormCreate(Sender: TObject);
var
op: TMCI_Open_Parms;
rp: TMCI_Record_Parms;
sp: TMCI_SaveParms;
begin
// Open
op.lpstrDeviceType := 'waveaudio';
op.lpstrElementName := '';
if mciSendCommand(0, MCI_OPEN, MCI_OPEN_ELEMENT or MCI_OPEN_TYPE, cardinal(@op)) <> 0 then
raise Exception.Create('MCI error');
try
// Record
rp.dwFrom := 0;
rp.dwTo := 5000; // 5000 ms = 5 sec
rp.dwCallback := 0;
if mciSendCommand(op.wDeviceID, MCI_RECORD, MCI_TO or MCI_WAIT, cardinal(@rp)) <> 0 then
raise Exception.Create('MCI error. No microphone connected to the computer?');
// Save
sp.lpfilename := PChar(ExtractFilePath(Application.ExeName) + 'test.wav');
if mciSendCommand(op.wDeviceID, MCI_SAVE, MCI_SAVE_FILE or MCI_WAIT, cardinal(@sp)) <> 0 then
raise Exception.Create('MCI error');
finally
mciSendCommand(op.wDeviceID, MCI_CLOSE, 0, 0);
end;
end;