![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
fakefreak |
|
||||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 18.6.2009 Репутация: нет Всего: нет |
cпасибо. к винампу подгружен dsound.dll и ещё какой-то in_dshow.dll, на который я решил не обращать внимания. в итоге подробно ознакомился с DirectSound
и подробно поразбирался с COM, но возник такой вопрос: я могу перехватывать только CoCreateObject, направленный системе? то есть после этого создаётся в адресном пространстве процесса объект класса (устройства DirectSound), с которым я уже ничего перехватывать не смогу, так? потому что мне перехват функции CoCreateObject не нужен - он очевидно вызывается при запуске винампа. но вот например перехват метода Play у объекта класса IDirectSound мне бы и нужен был - это вообще реально его перехватить? |
||||
|
|||||
xvr |
|
||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Да
|
||||||||
|
|||||||||
fakefreak |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 18.6.2009 Репутация: нет Всего: нет |
Спасибо, xvr. Вроде теперь всё понятно и очень интересно. Думаю вопросы ещё появятся, буду задавать. =)
|
|||
|
||||
fakefreak |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 18.6.2009 Репутация: нет Всего: нет |
так.. :( ничего не понимаю с функцией CoCreateObject - может немного не то написали? есть подходящие по смыслу CoCreateInstance и CoGetClassObject, но про CoCreateObject инфы практически нету. вот нашёл, что "The CoCreateObject function only applies to InstallScript projects.", но причём здесь InstallScript и InstallShield ума не приложу о_О
|
|||
|
||||
Andrew121 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 21.6.2009 Репутация: нет Всего: 1 |
fakefreak, Что значит нет?!!!
Вот: http://social.msdn.microsoft.com/Search/en...Object&ac=8 Просвещайся ![]() |
|||
|
||||
fakefreak |
|
||||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 18.6.2009 Репутация: нет Всего: нет |
да, на мсдн'е я есессно искал уже, но после этого ещё детально с каждой ссылкой ознакомился. в паре случаев что-то совершенно несущественное, пара ссылок пустых, а в остальных только лишь:
к примеру по CoCreateInstance есть полное описание функции, как и всех системных, но к этой почему-то нет совершенно никакой инфы - первый раз с таким сталкиваюсь. ладно, я наверное вам уже надоел своими глупыми вопросами.. даже как-то смущаюсь.. =) |
||||
|
|||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Не то, оно называется CoCreateInstance
Возможно есть еще функции, которыми можно создавать COM объекты |
||||
|
|||||
fakefreak |
|
||||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 18.6.2009 Репутация: нет Всего: нет |
из функций
вызываются только
в общем довольно странно пока что для меня. непонятно, буду разбираться.. Это сообщение отредактировал(а) fakefreak - 28.6.2009, 07:14 |
||||
|
|||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Вполне нормальный набор. Надо контролировать, что передается в первых 2х параметрах CoCreateInstance Но есть подводный камень - в том же WinAmp'е вывод (равно как и все остальное) делается через PlugIn'ы, и для вывода есть 3 штуки: DS, Wave, Disk. Так что DS может быть и не задействован вообще. Мне представляется, что нужно контролировать первоисточник, т.е. звуковую карту. Проверить настройки звукового mixer'а, включить capture звука (предварительно настроив mixer), и проанализировать звук - если там есть что то, большее уровня шумов в течении как минимум нескольких секунд, значит в колонках что то звучит ![]() |
||||
|
|||||
fakefreak |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 18.6.2009 Репутация: нет Всего: нет |
а с помощью чего это делать? то есть подскажите куда копать нужно, кто такие функции предоставляет. апи виндовс? win32 или native? или directx? в принципе идея хороша, но что будет, если пользователь в трее на значке динамика в винде выключит звук? - на звуковой карте будут одни шумы? ps а у меня уже перехват cocreateinstance заработал - теперь вроде как и не нужен =\ Это сообщение отредактировал(а) fakefreak - 30.6.2009, 00:06 |
|||
|
||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
В API есть набор функций waveIn* и mixer* (в mmsystem.h) Через DirectSound тоже можно (см в прикрепленном файле пример ввода через waveIn - ввод используется для оцифровки шумов карты, для получения случайных значений для генератора случайных чисел)
![]() Присоединённый файл ( Кол-во скачиваний: 2 ) ![]() |
||||
|
|||||
fakefreak |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 18.6.2009 Репутация: нет Всего: нет |
спасибо большое. разобрался, начитался.. но есть одно но: в примере сигнал считывается с микрофона, но вся система mmsystem.h предоставляет только функции записи с устройств линейного входа, микрофона, ещё каких-то неважных.. и функции воспроизведения на устройства линейного выхода, миди, и т.д.. запись мне не нужна, а надо бы узнать что происходит на линейном выходе. но туда можно только воспроизводить буферы, а узнать что на нём происходит нельзя. разве что если на линейный вход может прямиком поступать сигнал с линейного выхода. но в этом я сомневаюсь нехило.
вы это и имели ввиду? а с DirectSound ещё не разбирался |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Прочтите через mixer к чему подключен выход и подключите туда же канал записи
|
|||
|
||||
fakefreak |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 18.6.2009 Репутация: нет Всего: нет |
извините, но не смог ничего сделать
как это сделать? нашёл уйму приложений с исходниками, которые записывают. но все они записывают с микрофона - ни одно не записывает с выхода звуки. как записать средствами winmm.dll звуки, издаваемые компьютером? помогите пожалуйста чем-нибудь |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Прочесть (перебрать) текущие настройки канала вывода, попробовать найти аналоги в канале ввода и настроить его аналогично
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |