Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> узнать смотрит ли юзер видео или слушает аудио, не стоит ли на паузе 
:(
    Опции темы
fakefreak
  Дата 18.6.2009, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 18.6.2009

Репутация: нет
Всего: нет



нужно узнать смотрит ли юзер видео или слушает ли аудио. причём именно работает ли, т.е. не стоит ли плеер на паузе. плееры WMP, WMC, winamp, etc.. - думаю, что это не влияет на дело, потому что делать хочу внедрением dll во все процессы через реестр и перехватом вызовов zwreadfile/ntreadfile - если процесс, обратившийся к звуковому или видео файлу имеет название winamp, например, то значит видео воспроизводится.
дельная идея или посоветуете получше?
мне кажется, что гнилая идея, потому что низкоуровневое обращение плеера к файлу может производиться и при паузе. но ничего более дельного придумать не могу.
PM MAIL   Вверх
andrew_121
Дата 18.6.2009, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 2
Всего: 33



fakefreak, Не верный подход. Невозможно определить то, что юзер смотрит фильм или слушает музыку. Это многозадачная ОС !!!
Проще отслеживать процессы по названию. Их не так уж много.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
fakefreak
Дата 18.6.2009, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 18.6.2009

Репутация: нет
Всего: нет



список процессов я уже получил успешно, увидел к примеру там винамп, получил у этого процесса список кодеков, чтобы понять чем занят плеер..
но всё это тупиковая ветвь. по кодекам загруженным в процесс ничего точного не скажешь, а просто список запущенных процессов мне тем более никак помочь не может - например агент винампа зачастую загружается при старте системы и висит в трее, но это ничего ещё не значит. паузу плеера при таком подходе тем более никак не понять.
а разве "многозадачная ОС !!!" - это аргумент для "Невозможно определить то, что юзер смотрит фильм или слушает музыку"? мне кажется, что способ должен быть, и не один, проблема только в сложности исполнения и точности предсказания.
PM MAIL   Вверх
andrew_121
Дата 18.6.2009, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 2
Всего: 33



Цитата(fakefreak @  18.6.2009,  23:33 Найти цитируемый пост)
мне кажется, что способ должен быть, и не один, проблема только в сложности исполнения и точности предсказания. 

 smile Успехов!


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
bugmenot
Дата 19.6.2009, 04:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 3.7.2006

Репутация: 0
Всего: 1



Может лучше перехватывать функции для вывода звука? (хотя это не поможет с видео без звука)
--------------------
доска объявленийвсе о горных велосипедах 
PM MAIL   Вверх
jonie
Дата 19.6.2009, 07:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



WMP имеет API, равно как и винамп.. можно использовать его.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Andrey44
Дата 19.6.2009, 07:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 8
Всего: 26



Еще конечно как вариант можно через загрузку процессора этим процессом. Тупо конечно, но можно.
Когда что-то воспроизводится процессор грузится больше, когда на паузе - загрузки почти нет.
Это просто как вариант. smile 


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
fakefreak
Дата 20.6.2009, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 18.6.2009

Репутация: нет
Всего: нет



Цитата(bugmenot @  19.6.2009,  04:37 Найти цитируемый пост)
Может лучше перехватывать функции для вывода звука? (хотя это не поможет с видео без звука) 

хорошая идея. видео без звука бывает редко) то есть также внедрить длл в процессы и перехватывать вызовы функций воспроизведения звука?
есть ещё вопросы по типу того какие же это функции, но я читал в правилах форума, что нельзя больше одного вопроса задавать) надеюсь это не так)

Цитата(jonie @  19.6.2009,  07:25 Найти цитируемый пост)
WMP имеет API, равно как и винамп.. можно использовать его. 

у винампа насколько я знаю всё легко с апи, а вот у вмп например вроде сложнее. имею ввиду сдк. и я не совсем представляю как это работает - расскажите в двух словах?

Это сообщение отредактировал(а) fakefreak - 20.6.2009, 19:11
PM MAIL   Вверх
andrew_121
Дата 20.6.2009, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 2
Всего: 33



Цитата(fakefreak @  20.6.2009,  19:10 Найти цитируемый пост)
я не совсем представляю как это работает - расскажите в двух словах?

Так же как и у винампа, только апи другие.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
fakefreak
Дата 21.6.2009, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 18.6.2009

Репутация: нет
Всего: нет



Цитата(andrew_121 @  20.6.2009,  19:44 Найти цитируемый пост)
Так же как и у винампа, только апи другие. 

порылся, скачал сдк к винампу.. в общем я правильно понимаю, что использовать апи винампа это значит написать свою длл, которая бы общалась с винампом через это самое апи? и это называется плагин. если так, то всё понятно и вариант отпадает. если же всё-таки возможно написать своё приложение, общающееся каким-то образом (каким?) с винампом через апи, то возможно сканало бы. но как тогда происходит это общение? - это мне как раз и непонятно было, когда спрашивал:
Цитата(fakefreak @  20.6.2009,  19:10 Найти цитируемый пост)
я не совсем представляю как это работает - расскажите в двух словах?

PM MAIL   Вверх
nix_crash
Дата 21.6.2009, 05:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 15.10.2007

Репутация: нет
Всего: нет



Цитата(fakefreak @  21.6.2009,  00:54 Найти цитируемый пост)
я правильно понимаю, что использовать апи винампа это значит написать свою длл, которая бы общалась с винампом через это самое апи?

Угу.


Цитата(fakefreak @  21.6.2009,  00:54 Найти цитируемый пост)
и это называется плагин.

Нет.


Смотри СДК. Ищи категорию функций не связанных с плагинами. Что-то вроди СОМ-сервера(или...). Для точности, спроси у виндавз-юзерс. Это в их юрисдикции.

PM MAIL   Вверх
fakefreak
Дата 22.6.2009, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 18.6.2009

Репутация: нет
Всего: нет



так.. всё-таки хотелось бы перехватывать вызовы к подсистемам винды. и вариант с перехватом вызовов звуковых функций мне нравится больше, чем функций чтения файлов. надежнее выглядит. но если перехватывать у приложения вызовы к winapi, а оно обращается напрямую к native api, или ещё жёсче - к ядру, то перехват ничего не даст. в связи с этим вопрос, может быть кто знает:
винамп использует winapi для работы со звуком или например native api? то есть на каком уровне он работает со звуком? не удивлюсь, что там низкоуровневое обращение к звуку..
ну и может кто знает то же самое для Windows Media Player
PM MAIL   Вверх
xvr
Дата 22.6.2009, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



90% мультимедийных приложений используют DirectX (точнее DirectShow & DirectSound) для вывода звука. Не уверен, что есть какие либо стандартные методы перехвата таких обращений. Кроме того, звук могут выводить не только плеера, даже голый MessageBox выводит какой то звук при открытии  smile 
PM MAIL   Вверх
fakefreak
Дата 23.6.2009, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 18.6.2009

Репутация: нет
Всего: нет



Цитата(xvr @  22.6.2009,  17:24 Найти цитируемый пост)
Кроме того, звук могут выводить не только плеера, даже голый MessageBox выводит какой то звук при открытии

ну это не проблема, если встраивать перехватчик, потому что пускай он будет проверять название процесса, в адресном пространстве которого находится,
а вот
Цитата(xvr @  22.6.2009,  17:24 Найти цитируемый пост)
90% мультимедийных приложений используют DirectX (точнее DirectShow & DirectSound) для вывода звука.

прекрасное замечание, я дурак раньше не сообразил. но в целом всё равно с помощью точно такого же перехвата хочу делать.

только вот теперь вопрос: как мне узнать загруженные процессом длл, и главное - как узнать вызываемые процессом функции из этой длл? например из dshow.dll, чтоб выбрать ту которую собственно перехватывать буду.
PM MAIL   Вверх
xvr
Дата 23.6.2009, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(fakefreak @ 23.6.2009,  00:23)
Цитата(xvr @  22.6.2009,  17:24 Найти цитируемый пост)
90% мультимедийных приложений используют DirectX (точнее DirectShow & DirectSound) для вывода звука.

прекрасное замечание, я дурак раньше не сообразил. но в целом всё равно с помощью точно такого же перехвата хочу делать.

DX & DShow работают через COM. Так что перехватывать надо вызовы CoCreateObject с соответствующими UUID
А названия DLL могут меняться

Цитата

только вот теперь вопрос: как мне узнать загруженные процессом длл, 
См Tool Help API
Цитата

и главное - как узнать вызываемые процессом функции из этой длл?
Инжектировать в процесс свою dll и ставить перехватчики на вызовы функций из интересующих dll к своей dll

PM MAIL   Вверх
fakefreak
Дата 25.6.2009, 03:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 18.6.2009

Репутация: нет
Всего: нет



Цитата(xvr @  23.6.2009,  08:55 Найти цитируемый пост)
Цитата

только вот теперь вопрос: как мне узнать загруженные процессом длл, 
См Tool Help API

cпасибо. к винампу подгружен dsound.dll и ещё какой-то in_dshow.dll, на который я решил не обращать внимания. в итоге подробно ознакомился с DirectSound

Цитата(xvr @  23.6.2009,  08:55 Найти цитируемый пост)
DX & DShow работают через COM. Так что перехватывать надо вызовы CoCreateObject с соответствующими UUID
А названия DLL могут меняться

и подробно поразбирался с COM, но возник такой вопрос:

я могу перехватывать только CoCreateObject, направленный системе? то есть после этого создаётся в адресном пространстве процесса объект класса (устройства DirectSound), с которым я уже ничего перехватывать не смогу, так?
потому что мне перехват функции CoCreateObject не нужен - он очевидно вызывается при запуске винампа. но вот например перехват метода Play у объекта класса IDirectSound мне бы и нужен был - это вообще реально его перехватить?
PM MAIL   Вверх
xvr
Дата 25.6.2009, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(fakefreak @ 25.6.2009,  03:24)
я могу перехватывать только CoCreateObject, направленный системе? 

Да
Цитата

то есть после этого создаётся в адресном пространстве процесса объект класса (устройства DirectSound), с которым я уже ничего перехватывать не смогу, так?
Нет, не так. Вы можете подменить возвращенный из CoCreateObject указатель на COM объект на свой собственный объект. После чего вызывать будут ваши методы, а уж там вы можете сделать все, что захотите. Главное не забыть перенаправить вызов в оригинальный объект
Цитата

потому что мне перехват функции CoCreateObject не нужен - он очевидно вызывается при запуске винампа. 
Нужно отловить факт создания объекта с интерфейсом IDirectSound, это делается при вызове CoCreateObject анализом GUID'ов интерфейса и класса
Цитата

но вот например перехват метода Play у объекта класса IDirectSound мне бы и нужен был - это вообще реально его перехватить?
Можно, но сложно. Просто создания IDirectSound не достаточно?

PM MAIL   Вверх
fakefreak
Дата 25.6.2009, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 18.6.2009

Репутация: нет
Всего: нет



Спасибо, xvr. Вроде теперь всё понятно и очень интересно. Думаю вопросы ещё появятся, буду задавать. =)
PM MAIL   Вверх
fakefreak
Дата 26.6.2009, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 18.6.2009

Репутация: нет
Всего: нет



так.. :( ничего не понимаю с функцией CoCreateObject - может немного не то написали? есть подходящие по смыслу CoCreateInstance и CoGetClassObject, но про CoCreateObject инфы практически нету. вот нашёл, что "The CoCreateObject function only applies to InstallScript projects.", но причём здесь InstallScript и InstallShield ума не приложу о_О
PM MAIL   Вверх
Andrew121
Дата 26.6.2009, 04:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 21.6.2009

Репутация: нет
Всего: 1



fakefreak, Что значит нет?!!!
Вот: http://social.msdn.microsoft.com/Search/en...Object&ac=8
Просвещайся smile 
PM MAIL   Вверх
fakefreak
Дата 26.6.2009, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 18.6.2009

Репутация: нет
Всего: нет



Цитата(Andrew121 @  26.6.2009,  04:54 Найти цитируемый пост)
fakefreak, Что значит нет?!!!
Вот: http://social.msdn.microsoft.com/Search/en...Object&ac=8
Просвещайся smile  

да, на мсдн'е я есессно искал уже, но после этого ещё детально с каждой ссылкой ознакомился.
в паре случаев что-то совершенно несущественное, пара ссылок пустых, а в остальных только лишь:
Код

StackTrace:
   at System.Runtime.InteropServices.Marshal.ThrowExceptionForHR(Int32 errorCode, IntPtr errorInfo)
   at System.EnterpriseServices.Thunk.Proxy.CoCreateObject(Type serverType, Boolean bQuerySCInfo, Boolean& bIsAnot


к примеру по CoCreateInstance есть полное описание функции, как и всех системных, но к этой почему-то нет совершенно никакой инфы - первый раз с таким сталкиваюсь.

ладно, я наверное вам уже надоел своими глупыми вопросами.. даже как-то смущаюсь.. =)
PM MAIL   Вверх
xvr
Дата 27.6.2009, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(fakefreak @ 26.6.2009,  01:12)
так.. :( ничего не понимаю с функцией CoCreateObject - может немного не то написали? 

Не то, оно называется CoCreateInstance
Цитата

есть подходящие по смыслу CoCreateInstance и CoGetClassObject, 
Угу, надо перехватывать их обе, и еще CoCreateInstanceEx и OleCreate* серию. А еще (в теории) серию CoGetInstanceFrom* функций
Возможно есть еще функции, которыми можно создавать COM объекты



PM MAIL   Вверх
fakefreak
Дата 28.6.2009, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 18.6.2009

Репутация: нет
Всего: нет



из функций
Код

[ole32.dll]
    CoCreateInstance ,5
    CoCreateInstanceEx ,6
    CoGetClassObject ,5
    OleCreate ,7
    OleCreateDefaultHandler ,4
    OleCreateEmbeddingHelper ,6
    OleCreateEx ,12
    OleCreateFromData ,7
    OleCreateFromDataEx ,12
    OleCreateFromFile ,8
    OleCreateFromFileEx ,13
    OleCreateLink ,7
    OleCreateLinkEx ,12
    OleCreateLinkFromData ,7
    OleCreateLinkFromDataEx ,12
    OleCreateLinkToFile ,7
    OleCreateLinkToFileEx ,12
    OleCreateMenuDescriptor ,2
    OleCreateStaticFromData ,7
    CoGetInstanceFromFile ,8
    CoGetInstanceFromIStorage ,7
    OleInitialize ,1
[dsound.dll]
    DirectSoundCaptureCreate ,3
    DirectSoundCaptureCreate8 ,3
    DirectSoundCreate ,3
    DirectSoundCreate8 ,3
    DllGetClassObject ,3

вызываются только
Код

откуда вызов:|
winamp.exe   | 00410FE4 | OleInitialize(00000000) returns: 00000000
pmp_activesy | 041346A4 | CoCreateInstance(04135704, 00000000, 00000001, 041356E4, 0413607C) returns: 80040154
pmp_njb.dll  | 041514FD | OleInitialize(00000000) returns: 00000001
pmp_njb.dll  | 04151515 | CoCreateInstance(04154128, 00000000, 00000007, 04154118, 04155068) returns: 80040154
pmp_p4s.dll  | 0416163E | CoCreateInstance(041744A0, 00000000, 00000017, 04174470, 0477FF9C) returns: 00000000
MSWMDM.dll   | 08DDFFDE | CoCreateInstance(00AEC9F4, 00000000, 00000001, 08DD1AA8, 0487FB60) returns: 00000000
MsPMSP.dll   | 08D703E0 | CoCreateInstance(08D63DD0, 00000000, 00000001, 08D63DB0, 0487FA70) returns: 00000000
in_wm.dll    | 1351386B | DirectSoundCreate(00000000, 13544B2C, 00000000) returns: 00000000


в общем довольно странно пока что для меня. непонятно, буду разбираться..

Это сообщение отредактировал(а) fakefreak - 28.6.2009, 07:14
PM MAIL   Вверх
xvr
Дата 28.6.2009, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(fakefreak @ 28.6.2009,  00:23)
вызываются только
Код

откуда вызов:|
winamp.exe   | 00410FE4 | OleInitialize(00000000) returns: 00000000
pmp_activesy | 041346A4 | CoCreateInstance(04135704, 00000000, 00000001, 041356E4, 0413607C) returns: 80040154
pmp_njb.dll  | 041514FD | OleInitialize(00000000) returns: 00000001
pmp_njb.dll  | 04151515 | CoCreateInstance(04154128, 00000000, 00000007, 04154118, 04155068) returns: 80040154
pmp_p4s.dll  | 0416163E | CoCreateInstance(041744A0, 00000000, 00000017, 04174470, 0477FF9C) returns: 00000000
MSWMDM.dll   | 08DDFFDE | CoCreateInstance(00AEC9F4, 00000000, 00000001, 08DD1AA8, 0487FB60) returns: 00000000
MsPMSP.dll   | 08D703E0 | CoCreateInstance(08D63DD0, 00000000, 00000001, 08D63DB0, 0487FA70) returns: 00000000
in_wm.dll    | 1351386B | DirectSoundCreate(00000000, 13544B2C, 00000000) returns: 00000000


в общем довольно странно пока что для меня. непонятно, буду разбираться..

Вполне нормальный набор. Надо контролировать, что передается в первых 2х параметрах CoCreateInstance
Но есть подводный камень - в том же WinAmp'е вывод (равно как и все остальное) делается через PlugIn'ы, и для вывода есть 3 штуки: DS, Wave, Disk. Так что DS может быть и не задействован вообще.
Мне представляется, что нужно контролировать первоисточник, т.е. звуковую карту. Проверить настройки звукового mixer'а, включить capture звука (предварительно настроив mixer), и проанализировать звук - если там есть что то, большее уровня шумов в течении как минимум нескольких секунд, значит в колонках что то звучит  smile 

PM MAIL   Вверх
fakefreak
Дата 29.6.2009, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 18.6.2009

Репутация: нет
Всего: нет



Цитата(xvr @  28.6.2009,  17:44 Найти цитируемый пост)
Мне представляется, что нужно контролировать первоисточник, т.е. звуковую карту. Проверить настройки звукового mixer'а, включить capture звука (предварительно настроив mixer), и проанализировать звук - если там есть что то, большее уровня шумов в течении как минимум нескольких секунд, значит в колонках что то звучит  smile 

а с помощью чего это делать? то есть подскажите куда копать нужно, кто такие функции предоставляет. апи виндовс? win32 или native? или directx? в принципе идея хороша, но что будет, если пользователь в трее на значке динамика в винде выключит звук? - на звуковой карте будут одни шумы?
ps  а у меня уже перехват cocreateinstance заработал - теперь вроде как и не нужен =\

Это сообщение отредактировал(а) fakefreak - 30.6.2009, 00:06
PM MAIL   Вверх
xvr
Дата 30.6.2009, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(fakefreak @ 29.6.2009,  23:45)
а с помощью чего это делать? то есть подскажите куда копать нужно, кто такие функции предоставляет. 

В API есть набор функций waveIn* и mixer* (в mmsystem.h) Через DirectSound тоже можно
(см в прикрепленном файле пример ввода через waveIn - ввод используется для оцифровки шумов карты, для получения случайных значений для генератора случайных чисел)
Цитата

в принципе идея хороша, но что будет, если пользователь в трее на значке динамика в винде выключит звук? - на звуковой карте будут одни шумы?
Да, но и пользователь никакой музыки при этом не услышит. Можно мониторить все настройки микшера, и определять, что пользователь сейчас с ними делает. Кроме того, вход захвата можно подключать непосредственно к источникам сигнала (насколько позволит звуковая карта), в таком случае пользователь может хоть наобключаться динамиком - это ни на что влиять не будет  smile 


Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  sndinp.zip 3,18 Kb
PM MAIL   Вверх
fakefreak
Дата 2.7.2009, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 18.6.2009

Репутация: нет
Всего: нет



Цитата(xvr @  30.6.2009,  09:34 Найти цитируемый пост)
В API есть набор функций waveIn* и mixer* (в mmsystem.h) Через DirectSound тоже можно
(см в прикрепленном файле пример ввода через waveIn - ввод используется для оцифровки шумов карты, для получения случайных значений для генератора случайных чисел)

спасибо большое. разобрался, начитался.. но есть одно но:
в примере сигнал считывается с микрофона, но вся система mmsystem.h предоставляет только функции записи с устройств линейного входа, микрофона, ещё каких-то неважных.. и функции воспроизведения на устройства линейного выхода, миди, и т.д..
запись мне не нужна, а надо бы узнать что происходит на линейном выходе. но туда можно только воспроизводить буферы, а узнать что на нём происходит нельзя. разве что если на линейный вход может прямиком поступать сигнал с линейного выхода. но в этом я сомневаюсь нехило.
Цитата(xvr @  30.6.2009,  09:34 Найти цитируемый пост)
Кроме того, вход захвата можно подключать непосредственно к источникам сигнала (насколько позволит звуковая карта)

вы это и имели ввиду?

а с DirectSound ещё не разбирался
PM MAIL   Вверх
xvr
Дата 2.7.2009, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Прочтите через mixer к чему подключен выход и подключите туда же канал записи

PM MAIL   Вверх
fakefreak
Дата 19.7.2009, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 18.6.2009

Репутация: нет
Всего: нет



извините, но не смог ничего сделать
Цитата(xvr @  2.7.2009,  21:42 Найти цитируемый пост)
Прочтите через mixer к чему подключен выход и подключите туда же канал записи

как это сделать?
нашёл уйму приложений с исходниками, которые записывают. но все они записывают с микрофона - ни одно не записывает с выхода звуки.

как записать средствами winmm.dll звуки, издаваемые компьютером?
помогите пожалуйста чем-нибудь
PM MAIL   Вверх
xvr
Дата 20.7.2009, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Прочесть (перебрать) текущие настройки канала вывода, попробовать найти аналоги в канале ввода и настроить его аналогично
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.1307 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.