![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте.
Вопрос о изменении громкости в Винде начиная с Висты, там такие красивые интерфейсы, называется вроде CoreAPI. Есть маленькая программа, суть при запуске считывает информацию из реестра и соответственно выставляет громкость и мьют аудио устройств. Беспокоит процедура для висты, код пациента: Код:
Так вот, если раскомментить хоть один релиз, то при отладке все вроде нормально отрабатывает, а если запустить ехе отдельно то вылетает АкцессВиолейшн и адреса бывают как полный 00000000 или около него так и FFFFFFFF. Покопал шоумесседжами, вылетает оно на втором прохождении цыкла на команде Devise.Activate. Вроде гдето писали что 0 значит что обращаюсь к несуществующему обьекту, а большое число -- к уже уничтоженному. Но чего спрашивается вылетать если раскомментить только последний интерфейс DeviceCollection._Release(правда здесь не на Активейт) ?? Да и что характерно DeviceCollection._Release и EndpointVolume._Release возвращают 0, походу все на объект ссылок больше нет и оно самоуничтожается, зато остальные возвращают 1, что бы это значило? Кто-нибудь с таким сталкивался, знает как аккуратно все объекты уничтожить? Последний раз редактировалось Andrew McDrew, 11.07.2011 в 19:57. |
#2
|
||||
|
||||
![]() Я не силен в интерфейсах, но вот что пишут умные люди:
Цитата:
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#3
|
|||
|
|||
![]() Аа вот оно что. Там же написано что Делфи сама вызывает все что нужно и вообще сказано руками к методам IUnknown не прикасаться. Не знал, спасибо за помощь.
|