如何为Delphi设置默认音频输入?

如何为Delphi设置默认音频输入?,delphi,default,microphone,Delphi,Default,Microphone,我想知道如何通过Delphi设置默认的音频捕获设备(麦克风) 我正在尝试使用mmsystem api的函数,下面是我的代码 procedure TForm1.Button1Click(Sender: TObject); var DevOutCaps: TWaveOutCaps; DevInCaps: TWaveInCaps; n, i: Integer; s: String; begin n := waveInGetNumDevs; for i := 0 to n-1 do begi

我想知道如何通过Delphi设置默认的音频捕获设备(麦克风)

我正在尝试使用mmsystem api的函数,下面是我的代码

procedure TForm1.Button1Click(Sender: TObject);
var
 DevOutCaps: TWaveOutCaps;
 DevInCaps: TWaveInCaps;
 n, i: Integer;
 s: String;
begin
n := waveInGetNumDevs;
for i := 0 to n-1 do
  begin
    waveInGetDevCaps(i, @DevInCaps, SizeOf(DevInCaps));
    s := PChar(@DevInCaps.szPname);
    ListBox1.Items.Add(s);
  end;
end;


procedure TForm1.Button2Click(Sender: TObject);
var
 Ndev : Integer;
 Adev : Integer;
begin
Ndev := AudioInDeviceNameToDeviceID(ListBox1.Items.Strings[ListBox1.ItemIndex]);
Adev := GetWaveInDevice;
ShowMessage( IntToStr(Adev) );
ShowMessage(ListBox1.Items.Strings[ListBox1.ItemIndex]);
ShowMessage( IntToStr(Ndev) );
if waveInMessage(HWAVEIN(WAVE_MAPPER), DRVM_MAPPER_PREFERRED_SET, Adev, Ndev) = MMSYSERR_NOTSUPPORTED then
   begin
   MessageDlg('NOT SUPPORTED', mtInformation, [mbOK], 0);
   end;
最好没有第三方组件。
谢谢您

WinMM API似乎是一种方式,使用DRVM\u MAPPER\u PREFERRED\u SET消息显然,它是受支持的,尽管在Win32下未记录:-


我认为互联网是这样的:dev:=1;waveInMessage(Waveine(WAVE_映射器),DRVM_映射器_首选集,dev,0);,但是不起作用,你是什么意思?你没有正确阅读文档。第一个参数是原始设备,第二个参数是新设备。此外,将任意值应用于参数(如1)并不是成功的秘诀。您需要枚举系统中的设备数量,并确保所传递的值实际有效。最后,始终检查任何API调用的结果并进行相应的处理。在发布问题时始终提供结果。“不工作”对任何人都没有用。我为“不工作”只是一种误解而道歉,返回以下函数“MMSYSERR_NOTSUPPORTED”。我使用的是windows 7我这里没有一台windows 7机器来试用它,你成功地让WinMM函数工作了吗?首先尝试一些非常简单的方法。正如我在最初的答复中所提到的,它们应该得到支持,但没有记录在案。另外,您是否如我前面指出的那样更正了参数顺序?当你不发布任何代码示例时,很难知道出了什么问题。是的,我做了很多事情来启动这个API,我用我正在尝试的代码编辑了这篇文章