Arquivo de Códigos - Página Inicial
Códigos-fonte
» Boletos Bancários
» Calendário de Eventos
Linguagens
» ActionScript
» Adobe AIR
» Adobe Flex
» AJAX
» C
» C#
» C++
» CSS
» Delphi
» DHTML - Dynamic HTML
» HTML/XHTML
» Java
» JavaFX
» JavaScript
» Java Servlets
» JSP - Java Server Pages
» Perl
» PHP
» PHP-GTK
» Python
» Ruby
» Tcl/Tk
» VB.NET
Bancos de Dados
» IBM DB2
» MySQL
Frameworks
» CodeIgniter
» jQuery
» JSF - Java Server Faces
» Qt
» Ruby On Rails
» Struts
» Struts 2
» wxWidgets
» Zend Framework
Container/Servidor
» Apache Tomcat
» Apache Web Server
Ferramentas
» Apache Ant
» iTextSharp (iText#)
Referências
» CSS1 e CSS2
» JavaScript
Serviços On-Line
» Qual é meu IP?
» Tabela Cores HTML I
» Tabela Cores HTML II
» Lista de Mime Types
» Códigos Teclas Virtuais
Usuários On-Line
Visitantes: 107
PHP
O que há de novo no PHP 5?
40 dicas e truques sobre como trabalhar com datas e horas em PHP
60 dicas e truques sobre como trabalhar com strings e caracteres em PHP
PHP e a Orientação a Objetos - POO (Curso Completo)

DHTML
Curso completo de DHTML para iniciantes

CSS
Como definir uma imagem de fundo fixa na página
Definindo uma imagem de fundo para botões HTML
Você está aqui: Inicio -> Tutoriais -> Delphi
Executando os sons do sistema
1 - Código Completo

O Delphi oferece uma maneira bem conveniente de se executar os sons do sistema (aqueles sons que ouvimos quando iniciamos ou fechamos o Windows, os sons dos diálogos de mensagens, etc). Para ver este exemplo em funcionamento, comece colocando a unidade MMSystem no uses do seu formulário.

Coloque um botão no formulário e faça com que seu evento onclick seja similar ao mostrado a seguir:

procedure TForm1.Button1Click(Sender: TObject);
begin
  PlaySound(PChar('SystemStart'), 0, SND_ASYNC);
end;

Execute o aplicativo e clique no botão. Você deverá ouvir o som de inicialização do Windows. Funcionou? Vamos entender o código agora:

2 - Entendendo a função PlaySound

A chave para a execução deste código é a função PlaySound, presente na unidade MMSystem.pas. Experimente abrir este arquivo (geralmente localizado em "C:\Arquivo de programas\Borland\Delphi#\Source\Rtl\Win\MMSystem.pas") e localizar esta função. Você deverá encontrar o protótipo abaixo:

function PlaySound(pszSound: PChar; hmod: HMODULE; fdwSound: DWORD): BOOL; stdcall;


O protótipo nos indica que esta função retorna um valor boolean. Na prática este valor nunca é testado. Mas você pode experimentar. Como você deve se lembrar, stdcall especifica que os parâmetros para a função serão passados da direita para a esquerda. Veja ainda uma observação sobre os parâmetros da função:

pszSound - Do tipo PChar (um ponteiro para uma variável do tipo Char), este parâmetro receberá o som a ser executado. O tamanho máximo desta string, incluindo o caractere de final de linha (null terminator), é de 256 caracteres. Se este parâmetro for 0 (NULL em C++) qualquer som do tipo wave que estiver sendo executado será interrompido.

Três flags no parâmetro fdwSound (SND_ALIAS, SND_FILENAME, and SND_RESOURCE) determinam se a string de pszSound será interpretada com um apelido para um evento do sistema, um nome de arquivo ou um identificador de recurso. Se nenhuma destas flags for especificada, a função PlaySound pesquisa o registro ou o WIN.INI a fim de encontrar uma associação com o nome do som especificado. Se uma associação for encontrada, o evento de som é executado, do contrário, a string fornecida é tratada como nome de arquivo.


hmod - Do tipo HMODULE (uma referência ao módulo atual), este valor pode ser 0 em Delphi (e NULL em C++), a menos que SND_RESOURCE seja definido no parâmtro fdwSound.

fdwSound - Define as flags que controlam como o som será executado. Os valores abaixo, extraídos da referência da API do Windows podem ser usados:

Valor
Significado
SND_APPLICATION
O som é executado usando uma associação específica com a aplicação
SND_ALIAS
O parâmetro pszSound deve ser um apelido (alias) para um evento de sistema no registro ou WIN.INI. Não use com SND_FILENAME ou SND_RESOURCE.
SND_ALIAS_ID
O parâmetro pszSound é um identificador de som pré-definido.
SND_ASYNC
O som é executado de forma assíncrona e a função PlaySound retorna imediatamente após o início da execução. Para finalizar um som no formato wave que está sendo executado de forma assíncrona, chame PlaySound com o parâmetro pszSound defininido como 0 (em Delphi) e NULL (em C++).
SND_FILENAME
O parâmetro pszSound é um nome de arquivo.
SND_LOOP
O som é executado repetidamente até que PlaySound seja chamado novamente com o parâmetro pszSound definido com 0 (Delphi) ou NULL (C++). Você deverá também definir a flag SND_ASYNC para indicar um evento de som assíncrono.
SND_MEMORY
Um arquivo de eventos de som é carregado na memória RAM. O parâmetro definido em pszSound deve apontar para uma imagem de som na memória.
SND_NODEFAULT
Nenhum som padrão é executado. Se o som não puder ser encontrado, PlaySound retorna sileciosamente sem executar som algum.
SND_NOSTOP
O som definido cederá lugar para outro som que já está executando. Se o som não puder ser executado porque o recurso necessário para geral tal som está ocupado executando outro som, a função retornará imediatamente com o valor FALSE sem executar o som desejado. Se este flag não for definido, a função PlaySound tentará parar o som atual, de forma a liberar o dispositivo para que o novo som seja executado.
SND_NOWAIT
Se o driver estiver ocupado, a função retorna imediatamente sem executar o som.
SND_PURGE
Todos os sons devem ser interrompidos. Se pszSound não for nil (Delphi) ou NULL (C++), todas as instâncias do som definido serão interrompidos. Se pszSound for nil (Delphi) ou NULL (C++), todos os sons que estarão sendo executados por solicitação da tarefa atual serão interrompidos. Você deve também defininir a referência de instância para parar os eventos SND_RESOURCE
SND_RESOURCE
O parâmetro pszSound é um identificador de recurso; hmod deve identificar a instância que contém o recurso.
SND_SYNC
A execução do som será síncrona. A função PlaySound retornará depois que a execução do som for finalizada.

Agora que vimos o protótipo da função PlaySound, vamos rolar o arquivo MMSystem.pas e encontrar sua definição. Veja:

function PlaySound; external mmsyst name 'PlaySoundA';

Aqui podemos ver que a função PlaySound simplesmente efetua uma chamada à função PlaySoundA definida na winmm.dll. Como descobrimos isso? Basta verificar o valor da constante mmsyst no arquivo MMSystem.pas:

mmsyst = 'winmm.dll';

E, como a função PlaySoundA está definida em uma DLL do sistema, nossa análise acaba por aqui. Mas não sem antes fornecer uma lista dos sons disponíveis:

SystemDefault
SystemAsterisk
SystemExclamation
SystemExit
SystemHand
SystemQuestion
SystemStart

Experimente trocar "SystemStart" por "SystemAsterisk" e veja o resultado. Estranho como essa lista não está disponível nos arquivos de ajuda do Win32. Um ponto a menos para a Microsoft.
 
 
Arquivo de Códigos - Página Inicial
Veja dicas, truques e anotações de Java Servlets
Obtendo o valor do radio button selecionado
Entendendo a classe HttpServlet
Entendendo a interface Servlet do pacote javax.servlet
Entendendo o pacote javax.servlet e seu conteúdo
Entendendo o pacote javax.servlet.http e seu conteúdo
Como verificar se uma requisição a um servlet foi feita usando GET, POST, HEAD, etc
Obtendo o valor do item selecionado em um menu de lista (select)
Como receber e processar uma matriz (array) de check boxes
Obtendo o conteúdo de caixas de texto
Como usar o método sendRedirect() da interface HttpServletResponse para redirecionar o navegador para uma URL absoluta ou externa
Veja dicas, truques e anotações de outras linguagens
Java - Eventos do teclado disponíveis na interface KeyListener
Java - Obtendo o índice da última ocorrência de um elemento em uma ArrayList
JSP (Java Server Pages) - Entendendo a classe Authenticator do pacote javax.mail
Java - Quebrar uma string em palavras
Adobe Flex - Como obter o item selecionado em um ComboBox
Java - Entendendo a classe Locale
Java - Entenda a classe JTable
Java - Saiba mais sobre a Java Collections Framework
Java - Entendendo a interface Set<E>
CSS - Cascading Style Sheets - Como definir a cor de fundo de um elemento usando um valor rgb


http://www.arquivodecodigos.net
:: Arquivo de Códigos - Softwares e Consultoria em Programação ::
Todo o conteúdo deste site, quando não devidamente observado, pertence a seus idealizadores e não
poderá ser usado para outras finalidades senão estudo e aprimoramento de técnicas de programação.
Certifique-se de ler as notas legais antes de proceder com o acesso e leitura do
conteúdo disponibilizado nestas páginas.

Fale Conosco: (62) 3261-7018 / (62) 8185-0734

Desenvolvedor Responsável: Osmar J. Silva

Página Inicial Contatos Pesquisar Mapa do Site