GARANTIR DESCONTO

Fórum Arquivo de som e dll ? #251826

24/09/2004

0

Obs.: Sou iniciante vamos com calma hehehe :-)


Pessoal posso carregar um arquivo de som dentro de uma dll para que meu arquivo não tenha que ficar exposto junto com o executável do programa, entende ? ( para não ficar ali na pasta um arquivo de musica normal aparecendo eu escondo ele e o usuario tb não pode ficar disparando aquele som, ou copiando ele enfim .....)

Acho que eu poderia fazer isso dentro do proprio executavel né ? Qual seria mais interessante e como faço isso ?


Obs 2.: SOm é mp3 até posso usar wav caso nao de mp3


Valeu


Koringa

Koringa

Responder

Posts

24/09/2004

Tatuweb

Dá para fazer com MP3 mas como com WAVE é mais fácil. Já que você quer colocar o som na DLL, primeiro crie um arquivo texto e coloque escreva nele:

SOUND WAVE C:\Pasta\arquivo.wav

Ao invés de SOUND vc pode usar qualquer palavra. Só botei ela como exemplo.

Abra o prompt do DOS e vá para a pasta Bin dá onde o Delhi está instalado. Ex:
[b:027aaa0959]CD\
CD C:\Arquivos de programas\Delphi3\BIN\[/b:027aaa0959]

Use o arquivo brcc32 para compilar o resource. No prompt digite:
[b:027aaa0959]BRCC32 C:\Pathdoprojeto\arquivo.rc[/b:027aaa0959]

Arquivo.rc é o arquivo texto que você salvou acima. Quando você fizer isso vai aparecer dentro do diretório bin do Delphi um arquivo de extensão .res (arquivo.res). Mova esse arquivo e coloque na pasta do seu projeto. Nota: Vc pode copiar o arquivo BRCC32.exe e colar na pasta do seu projeto. Isso facilita bastante.

Feito isso no seu projeto de DLL você vai colocar a linha:
[b:027aaa0959]{$R Arquivo.res}[/b:027aaa0959].

No projeto do EXE você coloca a rotina abaixo para carregar o arquivo de som:

var
  FindHandle, ResHandle, LibHandle: THandle;
  ResPtr: Pointer;
begin
  LibHandle:=Loadlibrary (´Project.dll´);
  try
    if LibHandle<>0 then
    begin
      FindHandle := FindResource (LibHandle, ´SOUND´, ´WAVE´);
      if FindHandle<>0 then
      begin
        ResHandle:=LoadResource (LibHandle, FindHandle);
        if ResHandle<>0 then
        begin
          ResPtr:=LockResource(ResHandle);
          if ResPtr<>Nil then
            SndPlaySound (PChar(ResPtr), snd_ASync or snd_Memory);
          UnlockResource (ResHandle);
          FreeResource (FindHandle);
        end;
      end;
    end;
  finally
    Beep;
  end;
end;



Responder

Gostei + 0

24/09/2004

Koringa

Dá para fazer com MP3 mas como com WAVE é mais fácil. Já que você quer colocar o som na DLL, primeiro crie um arquivo texto e coloque escreva nele:
SOUND WAVE C:\Pasta\arquivo.wav
Ao invés de SOUND vc pode usar qualquer palavra. Só botei ela como exemplo. Abra o prompt do DOS e vá para a pasta Bin dá onde o Delhi está instalado. Ex: [b:6f2ad859ef]CD\ CD C:\Arquivos de programas\Delphi3\BIN\[/b:6f2ad859ef] Use o arquivo brcc32 para compilar o resource. No prompt digite: [b:6f2ad859ef]BRCC32 C:\Pathdoprojeto\arquivo.rc[/b:6f2ad859ef] Arquivo.rc é o arquivo texto que você salvou acima. Quando você fizer isso vai aparecer dentro do diretório bin do Delphi um arquivo de extensão .res (arquivo.res). Mova esse arquivo e coloque na pasta do seu projeto. Nota: Vc pode copiar o arquivo BRCC32.exe e colar na pasta do seu projeto. Isso facilita bastante. Feito isso no seu projeto de DLL você vai colocar a linha: [b:6f2ad859ef]{$R Arquivo.res}[/b:6f2ad859ef]. No projeto do EXE você coloca a rotina abaixo para carregar o arquivo de som:
var
  FindHandle, ResHandle, LibHandle: THandle;
  ResPtr: Pointer;
begin
  LibHandle:=Loadlibrary (´Project.dll´);
  try
    if LibHandle<>0 then
    begin
      FindHandle := FindResource (LibHandle, ´SOUND´, ´WAVE´);
      if FindHandle<>0 then
      begin
        ResHandle:=LoadResource (LibHandle, FindHandle);
        if ResHandle<>0 then
        begin
          ResPtr:=LockResource(ResHandle);
          if ResPtr<>Nil then
            SndPlaySound (PChar(ResPtr), snd_ASync or snd_Memory);
          UnlockResource (ResHandle);
          FreeResource (FindHandle);
        end;
      end;
    end;
  finally
    Beep;
  end;
end;


É isso ai !!!
Brigadao cara :p


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar