Adicionando um icone no System Tray com Adobe AIR
As vezes você precisa que seu aplicativo rode em "background" bastando acessa-lo por um icone no systray do seu computador. O Adobe AIR suporta essa funcionalidade, sendo possivel usar a interação tanto com o botão direito quanto com o botão esquerdo do mouse.
Vamos pegar uma imagem qualquer para nosso exemplo, como essa: ![]()
Carregaremos a imagem em nossa aplicação usando a classe Loader, assim que o carregamento estiver completo, sera adicionando no system tray usando a propriedade NativeApplication.nativeApplication.icon.bitmaps.
-
public function init():void
-
{
-
}
-
-
{
-
NativeApplication.nativeApplication.icon.bitmaps = [event.target.content.bitmapData];
-
}
Executando a aplicação, veremos a imagem ao lado do relogio do windows. Vamos adicionar um tooltip:
-
public function init():void
-
{
-
var systray:SystemTrayIcon = NativeApplication.nativeApplication.icon as SystemTrayIcon;
-
if (NativeApplication.supportsSystemTrayIcon)
-
{
-
systray.tooltip = "to aqui ô!!! o/";
-
}
-
}
Rodando o programa veremos o icone aparecendo no system tray, ao passar o mouse por cima, o tooltip.
Agora vamos implementar a ação para quando o usuário clicar com o botão direito do mouse. Usaremos o a classe NativeMenu e NativeMenuItem, é bem parecido com o que já usamos no Flash Player. Vamos instanciar a classe e adicionar um evento para a ação de select:
-
var iconMenu:NativeMenu = new NativeMenu();
-
var aboutCommand:NativeMenuItem = iconMenu.addItem(new NativeMenuItem("blablabla"));
-
var webCommand:NativeMenuItem = iconMenu.addItem(new NativeMenuItem("Ir para o blog"));
-
iconMenu.addItem(new NativeMenuItem("",true));//separator
-
var exitCommand:NativeMenuItem = iconMenu.addItem(new NativeMenuItem("Exit")); exitCommand.addEventListener(Event.SELECT, closeApp);
Agora verificando se o sistema operacional suporta system tray:
-
if (NativeApplication.supportsSystemTrayIcon)
-
{
-
var systray:SystemTrayIcon = NativeApplication.nativeApplication.icon as SystemTrayIcon;
-
systray.menu = iconMenu;
-
}
Segue o código completo:
DOWNLOAD
Referencia:
http://help.adobe.com/en_US/AIR/1.5/devappsflex/WS5b3ccc516d4fbf351e63e3d118666ade46-7dcc.html
Translations
English Version
16 Comments
Other Links to this Post
RSS feed for comments on this post. TrackBack URI


By Ved, May 21, 2009 @ 09:28
Muito obrigado pelo tutorial! Vai me ajudar bastante! =D
By Ved, May 21, 2009 @ 09:49
Só um detalhe. Se vc quiser complementar sua informação, eu fiz uma verificação se o SO é Mac. Se for, adiciono um icone de 128×128px pois ele será mostrado no dock. Se for windows, insiro o icone padrao de 16×16px.
// Verifica se é MacOS
if(NativeApplication.supportsDockIcon){
icon.load(new URLRequest(“assets/images/icons/icone128×128.png”));
} else {
icon.load(new URLRequest(“assets/images/icons/icone16×16.png”));
}
By Leonardo França, May 21, 2009 @ 13:04
Boa Ved, não tinha testado ainda no mac ;o)
By popup, May 23, 2009 @ 18:42
gostei do post
By janderson, May 26, 2009 @ 12:22
boa dica, muito útil, vlw!
By João, June 6, 2009 @ 19:41
Boa noite ! Queria deixar a seguinte questão.. Porque razão num video flashchat , apos uns dias de utilização ao entrar um nick ou ao sair do chat , não conseguimos escrever durante breves segundos e apos o server enviar um pedido por E-mail aos serviços do Flash media server para me fazerem reset o chat deixa de bloquiar durante uns dias . o erro é do flash media server ou da configuração do chat?? Antecipadamente o meu Obrigado
By Leonardo França, June 9, 2009 @ 10:08
Dificil responder assim, entra ai uma serie de fatores, como o servidor esta configurado, a banda da internet usada, erro do programador etc
By Carlos, June 17, 2009 @ 11:27
Adorei o seu blog.
By rodrigo, June 19, 2009 @ 14:22
ola grande leonardo que acompanho a anos, eu tenho uma duvida simples ate, eu to fazendo um navegador tem como eu clicar com o botao direito do mouse e abrir link em outra aba???
mal se for easy de mas é que to novo nisso ainda.
flw
By Lucas Monteverde, June 25, 2009 @ 16:05
Olá, li o seu tutorial, e já li outros similares, mas ainda estou com uma dúvida, seria possível restaurar o aplicativo do system tray, com um comando do teclado(hotkey) algo como o google desktop faz(duplo ctrl)?
By Leonardo França, June 28, 2009 @ 23:02
Ola, obrigado pelo prestigio!
Quanto a sua pergunta, possivel sim, da um trabalhinho mas é possivel sim, assim que sobrar um tempo, posso deixar um exemplo no blog
By Leonardo França, June 28, 2009 @ 23:42
Ola Lucas,
É possivel sim, basta implemantar o evento de restaurar a janela com o evento do teclado(KeyboardEvent) com um contator simples.
caso queira, posto um exemplo
By João, July 2, 2009 @ 09:34
Ola amigo,
Primeiro parabéns pelo blog, conteúdo simples e objetivo, muito bom mesmo.
Fiquei com uma dúvida, isso funciona da mesma forma no linux?
By Leonardo França, July 2, 2009 @ 12:48
Ainda nao testei no linux, vou ver se consigo fazer um teste, mas em teoria deve funcionar da mesma forma
By Antonio Carlos, November 16, 2009 @ 17:29
Olá Leonardo..
Muito bom o post.. contudo tenho uma dúvida.
Seria possível a janela da aplicação ficar visível mas não aparecer na taskbar?
No Windows seria mais ou menos como Crtl+R, o famoso “Executar”, .. a janela está visível mas não é representada na barra de tarefas..
valeu..
By Leonardo França, December 8, 2009 @ 11:54
é possivel sim, vc vai usar a mesma tecnica para esconder a janela