Как проверить наличиие звуковой карты

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Как проверить наличиие звуковой карты

Сообщение X-BOND » 04.06.2003 (Ср) 13:55

:?:

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 04.06.2003 (Ср) 13:57

Да блин! :twisted: Читайте RTFM, MSDN то есть! Есть реальная штука - WMI. С ее помощью можно все проверить и настроить.

ЗЫ - имя класса, который отвечает за звуковухи Win32_SoundDevice

Как получать классы - смотри в форуме я пример оставил в теме про выключение ХР.

GoGosha
Постоялец
Постоялец
 
Сообщения: 642
Зарегистрирован: 02.08.2002 (Пт) 9:14
Откуда: Russia

Сообщение GoGosha » 04.06.2003 (Ср) 14:19

ABC = Environ ("BLASTER") 'координаты звуковой карты

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 04.06.2003 (Ср) 14:20

Никак RayShade WmiTools качнул......)))))
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 04.06.2003 (Ср) 16:15

Нет, просто понадобилось написать скриптяру для сетки чтобы перегружать сервак предварительно всем подключенным пользователям отправляя месадж с предупреждением :) Вот и пришлось копаться :)

ShadowCaster
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 24.05.2002 (Пт) 10:52

Сообщение ShadowCaster » 04.06.2003 (Ср) 22:08

:shock: Мдя...

В форме:

Private Declare Function waveOutGetNumDevs Lib "winmm.dll" Alias "waveOutGetNumDevs" () As Long

Function CheckAudio() as Boolean
dim l as long

l = waveOutGetNumDevs()

if l=0 then CheckAudio = False else CheckAudio = True
End Function

Внимание! установленный Voice модем считается за звуковое устройство.

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 05.06.2003 (Чт) 12:32

to ShadowCaster
Спасибо за единственный нормальный ответ. :wink:

to GoGosha
Пробовал, не работает.



Но как можно определить что это именно звуковуха, а не что-то другое?
Может есть какая нибудь функция типа GetWaveOutName (index as long...

GoGosha
Постоялец
Постоялец
 
Сообщения: 642
Зарегистрирован: 02.08.2002 (Пт) 9:14
Откуда: Russia

Сообщение GoGosha » 05.06.2003 (Чт) 15:45

X-BOND писал(а):to GoGosha
Пробовал, не работает.


А я не пробовал, потому, что лень взуковуху витыкать(Выключаться потом опять БР-Р-Р.....) но думал, что сработает

ShadowCaster
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 24.05.2002 (Пт) 10:52

Сообщение ShadowCaster » 05.06.2003 (Чт) 23:17

Принцип прост: если устройство одноканальное (моно), то скорей всего это момед, ну а если стерео или лучше, то точно звуковуха.
:!: Примерно так...

В форме (для модуля сделай Private -> Public)

Private Type WAVEOUTCAPS
wMid As Integer
wPid As Integer
vDriverVersion As Long
szPname As String * 32
dwFormats As Long
wChannels As Integer
dwSupport As Long
End Type

Private Declare Function waveOutGetDevCaps Lib "winmm.dll" Alias "waveOutGetDevCapsA" (ByVal uDeviceID As Long, lpCaps As WAVEOUTCAPS, ByVal uSize As Long) As Long

Function IsAudioCard(ByVal devNum as long) As Boolean
dim woc as WAVEOUTCAPS
dim woc_len as long

woc_len = len(woc)

waveOutGetDevCaps devNum, woc, woc_len

if (woc.wChannels=1) Then ' Моно аудио устройство -> модем
IsAudioCard = False
Else ' Стерео или лучше аудио устройство -> Звуковая карта
IsAudioCard = True
End If
End Function

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 09.06.2003 (Пн) 10:58

А что передавать в переменной devNum?

ставил и 0, и 1 - ни фига, пишет каналов 0
Это скорей всего ID самого звукового устройства. А как его получить?

ShadowCaster
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 24.05.2002 (Пт) 10:52

Сообщение ShadowCaster » 09.06.2003 (Пн) 13:23

Так работает, но насчёт каналов не знаю (у моего SB Live! выдаёт -1, т.е. &HFFFF), т.к. у момеда не установлен отдельно драйвер Спикера, так что пробуй...

...
' переменной "woc_len" вообще не надо

waveOutGetDevCaps devNum, woc, CLng(woc_len)
...

ASD
Модератор
Модератор
Аватара пользователя
 
Сообщения: 1758
Зарегистрирован: 07.12.2001 (Пт) 21:08
Откуда: Russia

Сообщение ASD » 09.06.2003 (Пн) 15:27

А сие извращение под XP работатет?
А то тама какието трабыл с winmm.dll есть.

Например куча примеров (в том числе на сайте MS) как по частотам замерять через эту библу, но под W2k и выше это не пашет.

PS. Это я не проверял....
Moderator VBStreets
---------------------------

ShadowCaster
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 24.05.2002 (Пт) 10:52

Сообщение ShadowCaster » 09.06.2003 (Пн) 21:11

Этот код пашет под моей Win2k так, как я и говорил...

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 10.06.2003 (Вт) 12:47

Еще раз повторюсь

как получить uDeviceID?


:?:

ShadowCaster
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 24.05.2002 (Пт) 10:52

Сообщение ShadowCaster » 10.06.2003 (Вт) 15:51

uDeviceID = порядковому номеру девайса в системе (1-й = "0", 2-й = "1", ...)

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 10.06.2003 (Вт) 16:26

Усё теперь ясно.
Тока он у меня тоже -1 показывает. К чему бы это :?

По логике я написал в коде, что если каналов 0 или 1 значит это не звуковуха, иначе - звуковуха.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 120

    TopList