Здравствуйте! Я тут пишу одну небольшую утилитку для души. Она хватает клавиши изменения громкости звука на моём ноутбуке через RegisterHotKey и при нажатии на соответсвующие клавиши изменяет громкость и показывает прогресс-бар поверх всех окон на секунду времени. Сначала для упрощения разбирательства с функциями winmm написал программу на Delphi с VCL, всё заработало. Потом решил переписать на ассемблер пользуя FASM. Так как ноут с 64-битным процессором, то решил делать 64-битную версию. Окно собралось, а вот инклудов с описанием winmm под FASM я сходу не нашёл. Потом нашёл на форуме FASM-а ссылку на http://users.egl.net/talktomatt/default.html со всеми инклудами, но в описании структур обнаружились ошибки, часть из них я исправил, но всё-равно у меня не получается на асме сделать желанное. Под конец я вообще сдался и переделал всё в 32-битный код, в итоге структуры проходят, но функции winmm всё-равно выдают ошибки. Как это исправить у меня уже идей нет, целый день вчера в виндбг просидел... Вот и вопрос: можт кто глянет исходник и скажет в каком ДНК у меня ошибка? Был бы благодарен! Ссылка на арх с паскалевым кодом и моим асмовым - http://files.myopera.com/Aux/files/zinfo.rar
Ох, там у них проверка на реферера... Сделал прокси пост - http://my.opera.com/Aux/blog/2007/09/17/another-proxy-post Через него можно скачать архив.
Да, из MMSystem.h. Был бы признателен за версию под FASM, а то я уже запутался во внутренностях этого инклуда.
Я решил изучить как работает виндовый миксер, он не перехватывает кнопки, а ждёт евент об изменении громкости. написал тест на дельфях - работает. тоже самое на асме - getmixercontroldetails даёт ошибку "неправильный контрол". сверил дампы своих структур - одинаковые. что за фигня? может фасм не правильно линкует?