kabessa Postado Abril 5, 2004 Denunciar Share Postado Abril 5, 2004 Teria como deixa um programa rodadando oculto sem q o usuario saiba.... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bolomaster Postado Abril 5, 2004 Denunciar Share Postado Abril 5, 2004 você quer deixar ele no Sys Tray ?oh veja se é isso alguns programas tornam-se mais utilizáveis e mais acessíveis pelo simples fato de estarem no System Tray ou “bandeja do sistema”, como alguns gostam de chamar. Um bom exemplo disto é o uso da calculadora do Windows, veja todo o caminho que deve-se percorrer até poder executa-la (excluindo é claro a possibilidade de se configurar uma tecla de atalho para ela ou ainda de coloca-la na barra de tarefas):Menu Iniciar, Programas, Acessórios, Calculadora.Ao invés de fazer isso muitos usuários simplesmente optam por pegar a calculadora que esta sobre a mesa, ou na gaveta e fazer o cálculo desejado. Agora pense bem se houvesse um ícone para a calculadora que estivesse a apenas um clique do mouse, certamente ela seria bem mais utilizada. Vale também lembrar aqui que às vezes precisamos fazer com que uma programa fique rodando o dia todo mas algum usuário descuidado sempre acaba clicando no botão de fechar, ou ele pressiona as teclas ALT+F4, sempre por acidente e acaba por fechar aquele programa que deveria ficar rodando. Tenho certeza que torna-se muito mais difícil fechar o seu programa por acidente estando ele no System Tray, e desta forma imune a cliques ou qualquer outro comando executado por descuido (é claro que ninguém vai estar imune à um CTRL+ALT+DEL), mas esta medida protege seu programa e ainda o torna mais acessível/disponível para o usuário. Bom vamos ao trabalho então. Usaremos durante este processo só uma função da API do windows, Shell_NotifyIcon . Esta função esta definida na Unit ShellAPI e requer apenas dois parâmetros. Obs: Não esqueça de declarar a Unit ShellAPI na seção Uses do formulário principal. O primeiro parâmetro é uma flag que vai indicar se o ícone esta sendo Adicionado, Modificado ou Removido e o segundo parâmetro é um ponteiro que será apontado para a estrutura TNotifyIconData passando o handle do ícone, o texto que será exibido em forma de hint quando o mouse estiver sobre o ícone, também o handle da janela que receberá a mensagem que o ícone vai enviar e o tipo da mensagem para esta janela. Primeiro adicione na seção private do seu formulário principal a linha: TrayIconData: TNotifyIconData; Depois adicione ao método OnCreate do formulário principal um procedimento para inicializar a estrutura TrayIconData e chamar a função Shell_NotifyIcon veja abaixo o exemplo:O parâmetro Wnd da estrutura TaryIconData, aponta para o programa que vai receber as mensagem vindas do ícone associado.O parâmetro hIcon indica qual ícone deve ser exibido no System Tray, neste caso estamos usando o mesmo ícone do programa. O Parâmetro szTip recebe o texto que será exibido como hint ao passar o mouse sobre o ícone no System Tray, aqui estamos usando o título do programa, se você quiser alterar o texto existe uma limitação quanto ao seu tamanho que não pode ser superior à 64 caracteres. O parâmetro uFlags esta definindo o ícone para receber as mensagens do programa ( process application messages ), habilitar a exibição do ícone e também do Hint. O parâmetro uCallbackmessage aponta para o identificador de mensagens do programa, o sistema usa este identificador para informar as mensagens identificadas como Wnd ou eventos do mouse, mas que não ocorreram na área do ícone. Este parâmetro recebe o valor da constante WM_ICONTRAY que equivale à WM_USER+1. Devemos declarar então a constante WM_ICONTRAY, e atribuir à ela o valor WM_USER+1 Agora que definimos os parâmetros do ícone podemos adicioná-lo ao System Tray chamando a função Shell_NotifyIcon da API. O primeiro parâmetro NIM_ADD adiciona o ícone na área do System Tray, existem ainda dois valores possíveis de serem passados para esta função da API, são NIM_DELETE e NIM_MODIFY que são usados para remover ou modificar um ícone na área do System Tray. Veremos exemplos de uso destes parâmetros mais à frente deste artigo. O Segundo parâmetro que passamos para a função foi a estrutura TrayIconData que inicializamos anteriormente. Neste ponto se você rodar seu programa você vai ver que foi adicionado um ícone ao System tray, observe três ítens: 1- Primeiro, nada acontece quando você clica sobre o ícone (nós ainda não criamos nenhum procedimento para tratar isso). 2- Segundo, além do ícone no System Tray ainda existe o botão correspondente ao seu programa na barra de tarefas (nosso objetivo era justamente remover isto). 3- Terceiro, quando fechamos o programa o ícone permanece no System Tray até que o mouse seja levado sobre ele. Bom chegamos à segunda parte do nosso artigo. Vamos começar pelo mais simples, remover o ícone do System Tray após o programa ser fechado.Vamos adicionar ao evento OnDestroy do formulário principal uma chamada para a funçãoShell_NotifyIcon passando como primeiro parâmetro o valor NIM_DELETE Para “escondermos” ou “remover” o botão do programa da barra de tarefas podemos usar um truque simples. No código do projeto (Menu Project / View Source), adicione a linha: Application.ShowMainForm := False;Após a linha:Application.CreateForm(TMainForm, MainForm); Agora vamos à parte mais complicada de todo o processo, criar um procedimento para fazer o ícone responder aos eventos do mouse. Primeiro declare na área public do formulário principal o procedimento para fazer o tratamento das mensagens recebidas. procedure TrayMessage(var Msg: TMessage); message WM_ICONTRAY; Segundo vamos à definição do procedimento declarado acima: Considerações finais: Neste artigo criamos um procedimento simples para tratar apenas as mensagens mais básicas geradas por eventos do mouse sobre o ícone, poderíamos por exemplo adicionar procedimentos para tratar o clique duplo com o botão esquerdo ou direito sobre o ícone, ao ser soltado o botão, etc..... Veja algo interessante, podemos fazer com que o volume do som aumente enquanto o botão esquerdo estiver pressionado sobre o ícone, ou que o volume baixe durante o tempo que o botão direito estiver pressionado sobre o ícone, existem inúmeras possibilidades, bastas ter tempo e um pouco de paciência para adaptarmos este exemplo às mais diversas necessidades. Bom por hora é isso, simples e rápido!!! No próximo artigo você verá como animar o ícone, fazer com que o ícone represente o estado de sua aplicação e ainda como criar um menu PopUp que será exibido ao clicar sobre o ícone. Baseado no artigo original de http://delphi.about.com/library/weekly/aa121801a.htm Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
kabessa
Teria como deixa um programa rodadando oculto sem q o usuario saiba....
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.