![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
fakefreak |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 18.6.2009 Репутация: нет Всего: нет |
нужно узнать смотрит ли юзер видео или слушает ли аудио. причём именно работает ли, т.е. не стоит ли плеер на паузе. плееры WMP, WMC, winamp, etc.. - думаю, что это не влияет на дело, потому что делать хочу внедрением dll во все процессы через реестр и перехватом вызовов zwreadfile/ntreadfile - если процесс, обратившийся к звуковому или видео файлу имеет название winamp, например, то значит видео воспроизводится.
дельная идея или посоветуете получше? мне кажется, что гнилая идея, потому что низкоуровневое обращение плеера к файлу может производиться и при паузе. но ничего более дельного придумать не могу. |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 2 Всего: 33 |
fakefreak, Не верный подход. Невозможно определить то, что юзер смотрит фильм или слушает музыку. Это многозадачная ОС !!!
Проще отслеживать процессы по названию. Их не так уж много. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
fakefreak |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 18.6.2009 Репутация: нет Всего: нет |
список процессов я уже получил успешно, увидел к примеру там винамп, получил у этого процесса список кодеков, чтобы понять чем занят плеер..
но всё это тупиковая ветвь. по кодекам загруженным в процесс ничего точного не скажешь, а просто список запущенных процессов мне тем более никак помочь не может - например агент винампа зачастую загружается при старте системы и висит в трее, но это ничего ещё не значит. паузу плеера при таком подходе тем более никак не понять. а разве "многозадачная ОС !!!" - это аргумент для "Невозможно определить то, что юзер смотрит фильм или слушает музыку"? мне кажется, что способ должен быть, и не один, проблема только в сложности исполнения и точности предсказания. |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 2 Всего: 33 |
![]() -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
bugmenot |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 3.7.2006 Репутация: 0 Всего: 1 |
Может лучше перехватывать функции для вывода звука? (хотя это не поможет с видео без звука)
--------------------
доска объявленийвсе о горных велосипедах |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 7 Всего: 118 |
WMP имеет API, равно как и винамп.. можно использовать его.
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 8 Всего: 26 |
Еще конечно как вариант можно через загрузку процессора этим процессом. Тупо конечно, но можно.
Когда что-то воспроизводится процессор грузится больше, когда на паузе - загрузки почти нет. Это просто как вариант. ![]() -------------------- ????? ??, ??????? ?????. ![]() |
|||
|
||||
fakefreak |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 18.6.2009 Репутация: нет Всего: нет |
хорошая идея. видео без звука бывает редко) то есть также внедрить длл в процессы и перехватывать вызовы функций воспроизведения звука? есть ещё вопросы по типу того какие же это функции, но я читал в правилах форума, что нельзя больше одного вопроса задавать) надеюсь это не так) у винампа насколько я знаю всё легко с апи, а вот у вмп например вроде сложнее. имею ввиду сдк. и я не совсем представляю как это работает - расскажите в двух словах? Это сообщение отредактировал(а) fakefreak - 20.6.2009, 19:11 |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 2 Всего: 33 |
Так же как и у винампа, только апи другие. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
fakefreak |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 18.6.2009 Репутация: нет Всего: нет |
порылся, скачал сдк к винампу.. в общем я правильно понимаю, что использовать апи винампа это значит написать свою длл, которая бы общалась с винампом через это самое апи? и это называется плагин. если так, то всё понятно и вариант отпадает. если же всё-таки возможно написать своё приложение, общающееся каким-то образом (каким?) с винампом через апи, то возможно сканало бы. но как тогда происходит это общение? - это мне как раз и непонятно было, когда спрашивал:
|
|||
|
||||
nix_crash |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 15.10.2007 Репутация: нет Всего: нет |
Угу. Нет. Смотри СДК. Ищи категорию функций не связанных с плагинами. Что-то вроди СОМ-сервера(или...). Для точности, спроси у виндавз-юзерс. Это в их юрисдикции. |
|||
|
||||
fakefreak |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 18.6.2009 Репутация: нет Всего: нет |
так.. всё-таки хотелось бы перехватывать вызовы к подсистемам винды. и вариант с перехватом вызовов звуковых функций мне нравится больше, чем функций чтения файлов. надежнее выглядит. но если перехватывать у приложения вызовы к winapi, а оно обращается напрямую к native api, или ещё жёсче - к ядру, то перехват ничего не даст. в связи с этим вопрос, может быть кто знает:
винамп использует winapi для работы со звуком или например native api? то есть на каком уровне он работает со звуком? не удивлюсь, что там низкоуровневое обращение к звуку.. ну и может кто знает то же самое для Windows Media Player |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
90% мультимедийных приложений используют DirectX (точнее DirectShow & DirectSound) для вывода звука. Не уверен, что есть какие либо стандартные методы перехвата таких обращений. Кроме того, звук могут выводить не только плеера, даже голый MessageBox выводит какой то звук при открытии
![]() |
|||
|
||||
fakefreak |
|
||||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 18.6.2009 Репутация: нет Всего: нет |
ну это не проблема, если встраивать перехватчик, потому что пускай он будет проверять название процесса, в адресном пространстве которого находится, а вот
прекрасное замечание, я дурак раньше не сообразил. но в целом всё равно с помощью точно такого же перехвата хочу делать. только вот теперь вопрос: как мне узнать загруженные процессом длл, и главное - как узнать вызываемые процессом функции из этой длл? например из dshow.dll, чтоб выбрать ту которую собственно перехватывать буду. |
||||
|
|||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
DX & DShow работают через COM. Так что перехватывать надо вызовы CoCreateObject с соответствующими UUID А названия DLL могут меняться
|
||||
|
|||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |