كيفية اكتشاف وجود جهاز تسجيل افتراضي في النظام؟

StackOverflow https://stackoverflow.com/questions/41330

  •  09-06-2019
  •  | 
  •  

سؤال

كيف يمكنني اكتشاف ما إذا كان النظام يحتوي على جهاز تسجيل افتراضي مثبت؟أراهن أنه يمكن القيام بذلك من خلال بعض الاستدعاءات إلى Win32 API، هل لدى أي شخص أي خبرة في هذا؟

أنا أتحدث عن القيام بذلك من خلال التعليمات البرمجية، وليس عن طريق فتح لوحة التحكم وإلقاء نظرة على خيارات الصوت.

هل كانت مفيدة؟

المحلول

باستخدام ديريكتكس SDK, ، يمكنك الاتصال بـ DirectSoundCaptureEnumerate، الذي سيقوم باستدعاء وظيفة DSEnumCallback الخاصة بك لكل جهاز DirectSoundCapture على النظام.المعلمة الأولى التي تم تمريرها إلى DSEnumCallback الخاص بك هي LPGUID، وهو "عنوان GUID الذي يحدد الجهاز الذي يتم تعداده، أو NULL للجهاز الأساسي".

إذا كان كل ما عليك فعله هو معرفة ما إذا كان جهاز التسجيل موجودًا (لا أعتقد أن هذا جيد بما يكفي إذا كنت تريد حقًا معرفة الجهاز الافتراضي)، فيمكنك استخدام waveInGetNumDevs:

#include <tchar.h>
#include <windows.h>
#include "mmsystem.h"

int _tmain( int argc, wchar_t *argv[] )
{
    UINT deviceCount = waveInGetNumDevs();

    if ( deviceCount > 0 )
    {
        for ( int i = 0; i < deviceCount; i++ )
        {
            WAVEINCAPSW waveInCaps;

            waveInGetDevCapsW( i, &waveInCaps, sizeof( WAVEINCAPS ) );

            // do some stuff with waveInCaps...
        }
    }

    return 0;
}

نصائح أخرى

هناك واجهة برمجة التطبيقات الصوتية مفتوحة المصدر تسمى بورتاوديو لديها طريقة يمكنك استخدامها.أعتقد أن الطريقة تسمى Pa_GetDeviceInfo() أو شيء من هذا القبيل.

لدى Win32 API وظيفة تسمى waveInGetNumDevs لذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top