2016-04-11 30 views
9

接続されているすべてのマイクのフルネームを取得したいと思います。私はグーグルで答えを見つけましたが、私を満足させる答えはありませんでした。C#でマイクのフルネームを取得するには?

は、私はいくつかの例をお見せしましょう:

1.

ManagementObjectSearcher mo = new ManagementObjectSearcher("select * from Win32_SoundDevice"); 

foreach (ManagementObject soundDevice in mo.Get()) 
{    
    MessageBox.Show(soundDevice.GetPropertyValue("Caption").ToString()); 
    // or 
    MessageBox.Show(soundDevice.GetPropertyValue("Description").ToString()); 
    //or 
    MessageBox.Show(soundDevice.GetPropertyValue("Manufacturer").ToString()); 
    //or 
    MessageBox.Show(soundDevice.GetPropertyValue("Name").ToString()); 
    //or 
    MessageBox.Show(soundDevice.GetPropertyValue("ProductName").ToString());      
} 

これらゲッターのすべてを示しています。 "デバイスのオーディオUSB" または "ハイビジョン規格と互換性のあるデバイスを"。

2.

WaveInCapabilities[] devices = GetAvailableDevices();   
foreach(device in devices) 
{ 
    MessageBox.Show(device.ProductName); 
} 

同じ答え: "デバイスのオーディオUSB" または "ハイビジョン規格と互換性のあるデバイス"。

私は完全な名前を取得したいと思います。つまり、「SennheiserマイクUSB」のようなものです。それも可能ですか?私は見つけた:Get the full name of a waveIn deviceしかし、その中のリンクが壊れていると私は(DirectSoundCaptureEnumerateを使用するために)C#のためのdsound.libが表示されません。 何も分からないのですか?それとも他の選択肢がありますか?

+2

Windowsのどこからでもデバイスのフルネームが表示されますか? (デバイスマネージャなど) – Heinzi

+0

@Heinziいいえ、デバイスマネージャにデバイスのフルネームが表示されません。それはできないことを意味しますか? – Darooks

+0

Windowsが完全なデバイス名を知らない場合、私はそれを取得する方法はないと思います。 (しかし、私はWindows APIの専門家ではないので、誰かが私を間違っていると分かると嬉しいです。) – Heinzi

答えて

4

@AnkurTripathi答えは正しいですが、それは32文字まで含まれている名前を返します。誰もこの制限を望まない場合は、enumaratorを使用することをお勧めします。

using NAudio.CoreAudioApi; 

MMDeviceEnumerator enumerator = new MMDeviceEnumerator(); 
var devices = enumerator.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.Active);    
foreach (var device in devices) 
    MessageBox.Show(device.friendlyName); 

これは完璧に機能します。

3

取得フルネーム(フレンドリ)のためNaudio https://naudio.codeplex.com/

for (int n = 0; n < WaveIn.DeviceCount; n++) 
{ 
    this.recordingDevices.Add(WaveIn.GetCapabilities(n).ProductName); 
    comboBoxAudio.Items.Add(WaveIn.GetCapabilities(n).ProductName); 
} 

をお試しください:

MMDeviceEnumerator enumerator = new MMDeviceEnumerator(); 
foreach (MMDevice device in enumerator.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.Active)) 
    { 
      this.recordingDevices.Add(device.FriendlyName); 
    } 
+0

上記と同じ回答があります。この例では、ProductNameの文字数は31文字です。 – Darooks

+0

@Darooks Windowsのどこにでもデバイスのフルネームが表示されますか? - もしそうでなければ - それ以上の情報はありません – Cadburry

+0

@Cadburry私はUSBを交換しなければなりませんでした。今すぐデバイスマネージャに完全な名前があります。私はそれ以前に気づいていない。 – Darooks

関連する問題