我来告诉你 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
代码发的不全:主要是应用到了AVICAP.DLL的接口。
获取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单元
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
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单元