Como colocar sons para tocar?

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Como colocar sons para tocar?

Mensagem por clodoaldomonteiro »

Olá amigos!

Queria saber se tem alguma função que toque os sons do windows, definidos pelo usuário no painel de controle?

Grato pela atenção.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Como colocar sons para tocar?

Mensagem por Maligno »

Você pode usar a função PlaySound() da API do Windows. Veja o MSDN para mais detalhes. Link: http://msdn.microsoft.com/en-us/library/aa909766.aspx
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Re: Como colocar sons para tocar?

Mensagem por clodoaldomonteiro »

Maligno!

Pelo q entendi essa função é para windows CE ou coisa parecida.

Ela existe em alguma lib do xharbour?
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Como colocar sons para tocar?

Mensagem por Maligno »

Engano meu. Peguei o endereço do Google. É que só uso o MSDN que instalei no HD. O link mais certo é: http://msdn.microsoft.com/en-us/library ... S.85).aspx (melhor colar esse link no seu navegador. Está cortando o final dele).

Mas note que todas as informações são as mesmas, incluindo os parâmetros de chamada. Ou seja, é a mesma. :)

Essa função, especificamente, você não encontrará em qualquer LIB, uma vez que ela já existe na sua máquina, na biblioteca WINMM.DLL. Ela faz parte da API do Windows. A não ser que alguém tenha feita alguma função similar com algum recurso diferente, com uma passagem de argumento diferente, mais compatível com a linguagem XBase, por exemplo.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Como colocar sons para tocar?

Mensagem por alaminojunior »

Um exemplo prático de como fazer:

Código: Selecionar todos

procedure main()
  DLLCall("WINMM.DLL",32,"sndPlaySoundA", "Inicialização do Windows XP.wav", 0 )
return
O parâmetro final "0" faz o sistema esperar a execução do som, se for "1" [se não me engano] permite a execução normal do sistema enquanto se toca.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Como colocar sons para tocar?

Mensagem por Maligno »

Os códigos:

Código: Selecionar todos

00  (SND_SYNC     ) -> a função retorna só após o som terminar
01  (SND_ASYNC    ) -> a função retorna antes do som terminar
02  (SND_NODEFAULT) -> silêncio, se a fonte não for encontrada
04  (SND_MEMORY   ) -> o primeiro argumento aponta para a memória
08  (SND_LOOP     ) -> entra em looping até re-executar a função
16  (SND_NOSTOP   ) -> não pára o som sendo executado
Pelo valores, dá pra perceber que eles podem ser combinados.

Mas a função sndPlaySound() existe hoje em dia apenas para retrocompatibilidade. Ela vem sendo substituída por PlaySound().
Curiosidade: no [x]Harbour é necessário usar uma função de chamada de DLL? Não se poderia executar a função da API diretamente?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Como colocar sons para tocar?

Mensagem por alaminojunior »

Maligno escreveu:no [x]Harbour é necessário usar uma função de chamada de DLL?
Não necessariamente.
Maligno escreveu:Não se poderia executar a função da API diretamente?
Tenho quase certeza que sim (não dou certeza por não dominar o assunto), pois o Leonardo me passou um código em C que faz uso da API do Windows para travamento do teclado e mouse, que usei para homologar o TEF.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Como colocar sons para tocar?

Mensagem por Maligno »

Imagino que não precise. Mas se tem dúvida, faça uma experiência simples com um WAV qualquer. E poste o resultado aqui. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Re: Como colocar sons para tocar?

Mensagem por clodoaldomonteiro »

Olá amigos!

Peguei a rotina que o Alamino passou e não deu certo, o único som que sai é um de erro, mesmo que eu coloque os daminhos dos arquivos.

Já a função que o Malígno informou, não sai nem som som de erro.

Tentei usar a função getenv() para pegar o conteúdo dos eventos de sons do windows, e também não retornou nada.

Tentei também usar a função loadlibrary() para ver se as funções das dlls poderiam ficar visíveis, mas ainda assim não deu.

To usando a gtwvw.lib, mas acho que não tem nenhuma função para tocar sons nela.

Vou continuar tentando aki.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Como colocar sons para tocar?

Mensagem por alaminojunior »

Acabei de testar e funcionou certinho. Por via das dúvidas coloque a DLL junto com o programa. Vai ver o seu path não está apontando para a pasta de sistema do Windows.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Como colocar sons para tocar?

Mensagem por Maligno »

De que jeito deu certo? Execução direta da função ou através da função DLLCall()?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Como colocar sons para tocar?

Mensagem por alaminojunior »

Funcionou do jeito que eu exemplifiquei lá em cima.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Re: Como colocar sons para tocar?

Mensagem por clodoaldomonteiro »

Alamino, deu certo.

Não precisei colocar a dll na pasta do meu sistema, era o seguinte:
Tava colocando a linha de comando assim:
DLLCall("WINMM.DLL",32,"sndPlaySoundA", "c:\windows\media\Desligamento do Windows.wav", 0 )
E deveria ser colocado assim:
DLLCall("WINMM.DLL",32,"sndPlaySoundA", "c:\windows\media\Windows Shutdown.wav", 0 )
com o nome dos arquivos .wav em ingles.
Vi que quando copiei o arquivo da pasta c:\windows\midea para a pasta do meu sistema, foi mudado o nome do arquivo para ingles.
Deve ser porque eu uso o Windows 7.
Coisas do windows.

Agora vou fazer uma função para chamar os sons que eu quero.

Valeu mesmo a ajuda de voces.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
SandroBelarmino
Usuário Nível 3
Usuário Nível 3
Mensagens: 464
Registrado em: 04 Set 2007 16:11
Localização: Pedreira-SP

Como colocar sons para tocar?

Mensagem por SandroBelarmino »

Ressuscitando o tópico,

Existe alguma forma de fazer isso em clipper?
Se for o caso abro um tópico na seção do clipper.

Obrigado
Alessandro R Belarmino
Clipper 5.2e - Blinker 7 - DBFNTX / DBFCDX
"Quem trabalha muito erra muito, quem trabalha pouco erra pouco, quem não trabalha não erra e quem não erra é promovido !!!!"
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Como colocar sons para tocar?

Mensagem por clodoaldomonteiro »

Acho que sim Sandro, se me lembro, comecei a fazer isso com Clipper, compilado com o Blinker, mas aconselho ao amigo a migrar para (x)Harbour.

Hoje está muito fácil a migração.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Responder