Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
4 / 4 / 1
Регистрация: 06.05.2013
Сообщений: 86
1

Как воспроизвести wav из dll

06.05.2013, 14:40. Показов 1808. Ответов 12
Метки нет (Все метки)

Здравствуйте, сразу скажу что читал здесь кучу тем про это, но не до конца понял.
Есть dll, в ней wav, нужно её воспроизвести.
Иду хоть в правильном направлении?

Вот мои наработки:
C++
1
2
3
4
5
6
TResourceStream* tmp = new TResourceStream((int)Res, L"music", LPWSTR("SOUND"));
    unsigned char * puchResourceBuffer =
               new  unsigned char[tmp->Size];
    tmp->Read(puchResourceBuffer,tmp->Size);
    PlaySound(LPWSTR("puchResourceBuffer"),NULL, SND_ASYNC | SND_MEMORY);
     delete tmp;
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.05.2013, 14:40
Ответы с готовыми решениями:

Как из dll воспроизвести wav файл ?
Подскажите пожалуйста, я создал свою dll и запихнул туда wav файл. Нигде не могу найти как этот...

Запихнуть wav в dll и воспроизвести в основном проекте
Хочется все wav-файлы спрятать в dll чтобы пользователи не трогали их. Никаких лишних манипуляций с...

Как воспроизвести wav файл функцией PlaySound
//--------------------------------------------------------------------------- #include <vcl.h>...

воспроизвести несколько wav файлов
Доброго времени суток. Есть компилятор Borland C++Builder 6 и несколько wav файлов(лежат в папке с...

12
4 / 4 / 1
Регистрация: 06.05.2013
Сообщений: 86
07.05.2013, 20:30  [ТС] 2
Что, никто ничего не подскажет?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31464 / 20511 / 7988
Регистрация: 22.10.2011
Сообщений: 35,625
Записей в блоге: 7
08.05.2013, 00:41 3
Зачем использовать TResourceStream, если PlaySound с флагом SND_RESOURCE умеет прямо из ресурсов воспроизводить музыку?
0
4 / 4 / 1
Регистрация: 06.05.2013
Сообщений: 86
08.05.2013, 11:20  [ТС] 4
Пишу так - не воспроизводит. Может по мимо dll надо еще подключать?
C++
1
PlaySound(L"MP", NULL, SND_ASYNC | SND_RESOURCE);
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31464 / 20511 / 7988
Регистрация: 22.10.2011
Сообщений: 35,625
Записей в блоге: 7
08.05.2013, 13:53 5
Собственно, возникает только один вопрос. Что такое HMODULE ты знаешь? Почему вторым параметром передается NULL, когда MSDN ясно говорит:
SND_RESOURCE
The pszSound parameter is a resource identifier; hmod must identify the instance that contains the resource.
0
4 / 4 / 1
Регистрация: 06.05.2013
Сообщений: 86
08.05.2013, 14:42  [ТС] 6
Как я понял, надо вот так писать? В playsound'е поставил Res как индентификатор, который содержит ресурс.
Но не фурычит, что то не так...
C++
1
2
3
HINSTANCE Res=LoadLibrary(L"Project1.dll");
 
PlaySound(L"MP",Res, SND_ASYNC | SND_RESOURCE);
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31464 / 20511 / 7988
Регистрация: 22.10.2011
Сообщений: 35,625
Записей в блоге: 7
08.05.2013, 15:00 7
Не надо LoadLibrary, нужен GetModuleHandle в данном случае...
0
4 / 4 / 1
Регистрация: 06.05.2013
Сообщений: 86
08.05.2013, 15:38  [ТС] 8
Так?
C++
1
2
3
4
HMODULE Res = GetModuleHandle(L"Sour.dll");
PlaySound(L"MP",GetModuleHandle(L"Sour"),SND_ASYNC | SND_RESOURCE);
или
PlaySound(L"MP",Res, SND_ASYNC | SND_RESOURCE);
Но хендл должен быть равен 0 при SND_RESOURCE.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31464 / 20511 / 7988
Регистрация: 22.10.2011
Сообщений: 35,625
Записей в блоге: 7
08.05.2013, 15:51 9
Цитата Сообщение от burnthemeat Посмотреть сообщение
Но хендл должен быть равен 0 при SND_RESOURCE.
Откуда такая информация? У MS на это счет другое мнение (ссылка - прежняя, из 5-го поста):
hmod
Handle to the executable file that contains the resource to be loaded. This parameter must be NULL unless SND_RESOURCE is specified in fdwSound.
(Этот параметр обязан быть NULL-ом, если только SND_RESOURCE не указано в fdwSound)
0
4 / 4 / 1
Регистрация: 06.05.2013
Сообщений: 86
08.05.2013, 16:34  [ТС] 10
Всё равно не получается. Как еще сделать в голову не приходит..
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31464 / 20511 / 7988
Регистрация: 22.10.2011
Сообщений: 35,625
Записей в блоге: 7
08.05.2013, 17:16 11
Проект минимальный выложи уже, а? Надоело мне догадываться чего там у тебя накручено. "Кто на ком стоял" - не поймешь, то ли у тебя в самой DLL воспроизведение, то ли в программе...
0
4 / 4 / 1
Регистрация: 06.05.2013
Сообщений: 86
08.05.2013, 19:15  [ТС] 12
Проект минимальней некуда:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "Unit1.h"
#include "Windows.h"
#include <mmsystem.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#pragma resource "Project1.res"
 
//HINSTANCE Res = LoadLibrary(L"Sour.dll");
 
HMODULE Ress = GetModuleHandle(L"Sour.dll");
 
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
PlaySound(L"MP",GetModuleHandle(L"Sour.dll"),SND_RESOURCE/SND_ASYNC);
}
В длл только wav файл добавил, ничего не писал.
0
1404 / 567 / 127
Регистрация: 31.10.2011
Сообщений: 1,955
09.05.2013, 06:48 13
http://msdn.microsoft.com/en-u... s.85).aspx
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.05.2013, 06:48

Тема пересоздана: Как воспроизвести звук (wav) из dll
Здравствуйте. Прошу написать код для воспроизведения звука из dll Заранее спасибо

Как воспроизвести звук wav из dll внедренной в процесс?
пробовал так PlaySound(MAKEINTRESOURCE(IDR_WAVE1), GetModuleHandle(NULL), SND_RESOURCE | SND_MEMORY...

Как воспроизвести .wav файл
Если пишу просто PlaySound(&quot;Sound.wav&quot;,NULL,SND_FILENAME | SND_ASYNC); Выдает ошибку error...

Как заставить JCE воспроизвести Wav?
Привет всем, ребята, дело такое, нужно звук в формате wav воспроизвести на сайте, т.е. чтобы кнопка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru