Комментарии 22
Создать себе проблему и с доблестью ее победить. 10 прокрастинаторов из 10!
Ну, в итоге-то, решил для себя иные проблемы.
По ConnectDirect максимум найденной документации было нечто вроде «А давайте мы не будем использовать ConnectDirect, лучше используем просто Connect». Дословно:
Как показала практика в моем случае, это был совсем не «safest way». Что там грузит GraphBuilder — знает только GraphBuilder (ну или показать только может). Ручной же перебор намного гибче в этом плане: Вдруг захочу написать себе еще и крутой медиа-плеер, а тут уже все готовенькое.
Да и в конце концов, хотелось себя развлечь работой с COM, так как скиллов в этом направлении у меня было явно маловато.
По ConnectDirect максимум найденной документации было нечто вроде «А давайте мы не будем использовать ConnectDirect, лучше используем просто Connect». Дословно:
IFilterGraph provides a ConnectDirect() method where we can specify a media type to use for the connection, and the 2 pins to be connected. This is fine if you know the media type that is going to be used, and you are confident that the 2 filters will be happy connecting to each other. A better way is to use IGraphBuilder::Connect(), which tries to connect 2 pins directly, and if that fails it tries to find combinations of filters that will go in between the 2 pins to complete the connection. This is the safest way, so it's what we'll use.
Как показала практика в моем случае, это был совсем не «safest way». Что там грузит GraphBuilder — знает только GraphBuilder (ну или показать только может). Ручной же перебор намного гибче в этом плане: Вдруг захочу написать себе еще и крутой медиа-плеер, а тут уже все готовенькое.
Да и в конце концов, хотелось себя развлечь работой с COM, так как скиллов в этом направлении у меня было явно маловато.
Если ваш инструмент — молоток, то любая проблема кажется гвоздём. Если ваш молоток — С++, то любой гвоздь кажется пальцем. Если ваш С++ — Бейсик, то любая проблема кажется кирпичной стеной, любой инструмент кажется собственной головой, а любое решение сводится к тому, чтобы долго бить со всего размаху инструментом об угол проблемы…
MCI, рассматривать не стал, как совсем неспортивное
остановился на объектах COM, которые неплохо встраивались в среду vb
Каким образом вариант с COM-объектом стал спортивнее варианта MCI? Если уж говорить про спортивность — то эти оба варианта неспортивные.
Ну я выбирал из числа встроенных в ОС решений. Может, есть и еще какие-то встроенные, но мне и этих двух хватило.
MCI мне не понравился тем, что управлять им надо было текстовыми(!) командами. Счел это дикостью и решил отказаться от него.
MCI мне не понравился тем, что управлять им надо было текстовыми(!) командами. Счел это дикостью и решил отказаться от него.
Скажите, а почему Вы не взяли уже готовую медиа библиотеку на подобии https://ru.wikipedia.org/wiki/BASS и FMOD?
Многие заканчивают сношения с MCI, COM, DCOM и другими не удобными API от Microsoft такими готовыми обертками.
Кстати интересно с BASS у Вас тоже были бы проблемы с Nero?
Многие заканчивают сношения с MCI, COM, DCOM и другими не удобными API от Microsoft такими готовыми обертками.
Кстати интересно с BASS у Вас тоже были бы проблемы с Nero?
Мне кажется, первое время вы ставили другой, внешний будильник на 10 минут раньше, чтобы следить за тем, как сработает/или нет будильник, который вы написали.
Отличный стимул вставать раньше!
Отличный стимул вставать раньше!
Nero Digital Audio Decoder для работы Nero Burning ROM не требуется. Как и 99% другой фигни, напиханной в этот говнопакет, который перестал быть юзабельным начиная как раз с 6-й версии.
Так что можно отключать спокойно.
Так что можно отключать спокойно.
Я думаю, что приложение создавалось, в надежде (или не исключая такую возможность), что его будут использовать и другие пользователи, у которых может быть установлено что угодно, в том числе и Nero Digital Decoder. Поэтому хотелось бы решить эту проблему, не отключая этот компонент.
Ну, некоторые приложения позволяют себе тихонько отключить мешающую им стороннюю бяку.
Некоторые ещё и не спрашивают. Do not be evil, как-то так.
Некоторые ещё и не спрашивают. Do not be evil, как-то так.
Ага. Согласен. Поэтому в данном случае представлен наиболее этичный вариант — справиться самому на этапе создания программы, чтобы пользователю не навредить и не заставлять разбираться самостоятельно.
Была и такая мысль, но от нее пришлось отказаться, так как:
— для regsvr /u — нужны права администратора;
— для удаления ключа из HKEY_CLASSES_RUUT — нужны права администратора.
Посчитал, что типичный будильник будет выглядеть очень нетипично, если будет требовать повышения привилегий через UAC. :)
Возможно, был (и есть) какой-то иной способ, но мне он в голову не пришел
— для regsvr /u — нужны права администратора;
— для удаления ключа из HKEY_CLASSES_RUUT — нужны права администратора.
Посчитал, что типичный будильник будет выглядеть очень нетипично, если будет требовать повышения привилегий через UAC. :)
Возможно, был (и есть) какой-то иной способ, но мне он в голову не пришел
я в командной строке Win7 написал себе будильник
только вместо звуков, появляется картинка
только вместо звуков, появляется картинка
Это решение из серии, поставить будильник на телефон и включить на время его срабатывания режим «не беспокоить», не добавив в исключения будильник? :-) Хотя, если он для напоминаний вроде «оторвись от компа, выключи пельмени», то вполне отличненько себе)
НЛО прилетело и опубликовало эту надпись здесь
Не работаю с С++, но дочитал до конца.
Интересно написано.
Интересно написано.
Очень жаль, что вам не попалась в то время на глаза библиотека bass. Нервы были бы намного целее.
Попалась, конечно. Попадалось и много других весьма интересных решений. На тот момент просто хотелось использовать что-то встроенное.
В случае же с bass пришлось бы добавлять библиотеку и (если бы я начал распространять будильник свой) либо добавлять ее в архив, либо предлагать ее скачивать с сайта (как в случае с total commander, который для ftps отправляет скачивать libssl вручную). В ее лицензии особо не разбирался, поэтому не знаю, как правильнее было бы поступить в случае с ней.
В случае же с bass пришлось бы добавлять библиотеку и (если бы я начал распространять будильник свой) либо добавлять ее в архив, либо предлагать ее скачивать с сайта (как в случае с total commander, который для ftps отправляет скачивать libssl вручную). В ее лицензии особо не разбирался, поэтому не знаю, как правильнее было бы поступить в случае с ней.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Воспроизводим mp3 в своей программе и что может этому помешать