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: 15
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 Qt
Como definir a quantidade máxima de caracteres que um QLineEdit aceitará
Habilitando ou desabilitando um QLineEdit
Obtendo o índice do item selecionado em um QComboBox
Obtendo o texto do item selecionado em um QComboBox usando currentText()
Percorrendo todos os itens de um QComboBox e exibindo seus textos
Como definir o ícone para o executável de uma aplicação Qt no Windows
Como obter o texto digitado em um QLineEdit
Como obter a quantidade de itens em um QComboBox
Como obter o texto do item selecionado em um QComboBox
Entenda a classe QComboBox e aprenda a usar este controle em seus programas Qt
Veja dicas, truques e anotações de outras linguagens
C - Terminou de usar o arquivo? Feche-o usando a função fclose()
JavaScript - Como exibir um número usando uma precisão de 4 dígitos
Java - Obtendo o endereço IP a partir de um nome de servidor ou domínio
JSP (Java Server Pages) - Como armazenar valores em sessões JSP
ActionScript - Obtendo o ano com 4 dígitos
Python - Como obter o código ASCII ou Unicode de um caractere
MySQL - Criando uma base de dados MySQL usando o mysqladmin
VB.NET - Fechar um formulário ao clicar em um botão
PHP - Como estabelecer uma conexão MySQL no modo orientação a objetos
Python - Obtendo o dia do mês como um decimal no intervalo 01-31


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