![]() |
Audio Aufnahmegeräte auflisten (Name wird abgeschnitten)
Hey,
momentan liste ich mir mit folgendem Code alle Aufnahmegeräte des Computers auf:
Delphi-Quellcode:
Funktioniert alles wunderbar, nur leider ist szPname im MixerCaps Struct auf 32 Zeichen begrenzt. :?
var
I: Integer; hMixerHandle: HMIXER; MixerCaps: TMixerCaps; begin for I := 0 to mixerGetNumDevs -1 do begin if (mixerOpen(@hMixerHandle, I, 0, 0, MIXER_OBJECTF_WAVEIN) = MMSYSERR_NOERROR) then begin try FillChar(MixerCaps, SizeOf(MixerCaps), #0); if (mixerGetDevCaps(hMixerHandle, @MixerCaps, SizeOf(TMixerCaps)) = MMSYSERR_NOERROR) then begin Memo1.Lines.Add(IntToStr(I) + ': ' + MixerCaps.szPname); end; finally mixerClose(hMixerHandle); end; end; end; end; 1) :arrow: Hat da jemand eine alternative Lösung parat? 2) :arrow: nur sekundär, aber fals sich jemand mit auskennt, gibt es eine Möglichkeit zu prüfen, ob das Gerät bereit ist? In der Systemsteuerung von Windows, wird z.b. nur bei Geräten, die bereit zur Verwendung sind, ein live Lautstärkepegel angezeigt (Win7) Viele Grüße Zacherl |
Re: Aufnahmegeräte auflisten (Name wird abgeschnitten)
Keine ne Idee?
Die DeviceTopology APIs sind leider erst ab Vista vorhanden und dieses ActiveX / Interface Zeugs würde ich auch sehr gerne vermeiden. http://msdn.microsoft.com/en-us/library/ms678714(VS.85).aspx |
Re: Audio Aufnahmegeräte auflisten (Name wird abgeschnitten)
Kannst du die Wide-Version von mixerGetDevCaps verwenden?
Es gibt ab und zu in der Win-API Längenbegrenzungen bei der Ansi-Version von API's. |
Re: Audio Aufnahmegeräte auflisten (Name wird abgeschnitten)
Die APIs und Strukturen sind jeweils die WideString Varianten, da ich Delphi 2009 verwendet habe. Eigentlich ist der abgeschnittene Name ja auch kein Bug, sondern eine Beschränkung der mixerGetDevCaps API. Wenn man sich die Struktur anschaut:
Delphi-Quellcode:
Sieht man die Begrenzung auf MAXPNAMELEN (32).
tagMIXERCAPSW = record
wMid: WORD; { manufacturer id } wPid: WORD; { product id } vDriverVersion: MMVERSION; { version of the driver } szPname: array [0..MAXPNAMELEN - 1] of WideChar; { product name } fdwSupport: DWORD; { misc. support bits } cDestinations: DWORD; { count of destinations } end; Aber irgendwie listet ja auch z.b. die Systemsteuerung unter XP die vorhandenen Geräte auf. Dort ist die Topology API meines Wissens nach noch nicht vorhanden, aber die Namen sind trotzdem nicht abgeschnitten. |
Re: Audio Aufnahmegeräte auflisten (Name wird abgeschnitten)
*push* :duck:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz