Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Мультимедиа
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.05.2009, 22:30
Аватар для DyaДько
DyaДько DyaДько вне форума
Прохожий
 
Регистрация: 02.05.2009
Адрес: Ижевск
Сообщения: 6
Репутация: 10
По умолчанию PlaySound in dll, resources from dll

Здравствуйте, в программировании я новичок и с хэндлами-указателями пока не очень-то лихо обращаюсь... В общем нужна помощь опытных программеров
Постановка задачи: Создать dll с запакованными в него звуками в формате .wav, из которого можно было их воспроизводить средствами функций самой же dll.
Задача казалось бы простая, да не совсем.
Сразу скажу, что мне не хотелось бы использовать таких монстров как, mediaPlayer. Хотелось бы обойтись апишным PlaySound. Полазил по форумам, порыскал - получил результат, но для моей специфической ситуации он не подошел. Везде примеры максимально упрощенные, где воспроизводится из исполняемого файла, а не подключаемой библиотеки функций. Думаю, код расскажет больше:
Код:
library Missille;
uses
mmsystem;
{$r sounds.res}
procedure PlaySND;
        begin
          PlaySound('SND1', 0, SND_RESOURCE or SND_ASYNC);
        end;
exports
        PlaySND;
begin
end.
После долгих мучений выяснил, что в этом случае поиск ресурса с именем 'SND1' происходит в исполняемом файле, а не в dll...Мне кажется, что нужно мыслить в направлении изменения второго параметра, чтобы получить результат(hmod : hmodule). Хэндл на исполняемый файл (должен быть равным 0, если используется флаг SND_RESOURCE). Но ведь мне нужен не хэндл исполняемого файла, а длл... И SND_RESOURCE у меня тоже используется... Просто не знаю как быть... Пробовал передавать функции хэндл библиотеки, получаемой из LoadLibrary. В этом случае стало вылетать... Кто-нибудь может мне что-нибудь подсказать?

Последний раз редактировалось DyaДько, 03.05.2009 в 18:16.
  #2  
Старый 03.05.2009, 23:30
Аватар для DyaДько
DyaДько DyaДько вне форума
Прохожий
 
Регистрация: 02.05.2009
Адрес: Ижевск
Сообщения: 6
Репутация: 10
По умолчанию

Всем спасибо, решил проблему:
Код:
library Missille;
uses
mmsystem,  SysUtils,
  Classes, windows;

{$r sounds.res}
procedure PlaySND;
        begin
         PlaySound('SND1',  GetModuleHandle('Project2'), SND_RESOURCE or SND_ASYNC);
        end;
exports
        PlaySND;
begin
end.
, где Project2.dll - имя длл-ки. Все воспроизводится. Я очень рад=)
Закрытая тема


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:33.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter