请问,怎么才能获取音、视频设备及个数啊?

解决方案 »

  1.   

    我来告诉你
    var
      list: TStringList;
    begin
    //  DoubleBuffered := True;
      List := GetDriverList;
      ComboBox1.Items.AddStrings(List);
      List.Free;
    end; 
    其中GetDriverList为
      function GetDriverList: TStringList;
    var
      i: integer;
      name: array[0..80] of char;
      ver: array[0..80] of char;
    begin
      result := TStringList.Create;
      result.Capacity := 10;
      result.Sorted := false;
      for i := 0 to 9 do
        if capGetDriverDescription(i, name, 80, ver, 80) then
          result.Add(StrPas(name) + ' ' + strpas(ver))
        else
          break;
    end;function capGetDriverDescription(
      wDriverIndex: UINT;
      lpszName: LPSTR;
      cbName: int;
      lpszVer: LPSTR;
      cbVer: int
      ): BOOL; stdcall; // capGetDriverDescriptionA
      

  2.   

    代码发的不全:主要是应用到了AVICAP.DLL的接口。
      

  3.   

    获取Micro与音频輸出设备比较简单
    function GetWavInDriverList: TstringList;
    var
      DevCount: Integer;
      i: Integer;
      CAPS: tagWAVEINCAPSA;
    begin
      Result := TstringList.Create;
      DevCount := waveInGetNumDevs();
      for i := 0 to DevCount do
      begin
        if waveInGetDevCaps(i, @CAPS, sizeof(tagWAVEINCAPSA)) <> MMSYSERR_NOERROR then
          Continue;
        Result.Add(caps.szPname);
      end;
    end;function GetWavOutDriverList: TstringList;
    var
      DevCount: Integer;
      i: Integer;
      CAPS: tagWAVEINCAPSA;
    begin
      Result := TstringList.Create;
      DevCount := waveOutGetNumDevs();
      for i := 0 to DevCount do
      begin
        if waveOutGetDevCaps(i, @CAPS, sizeof(tagWAVEINCAPSA)) <> MMSYSERR_NOERROR then
          Continue;
        Result.Add(caps.szPname);
      end;
    end;需要useMMSYstem单元