Ir ao conteúdo

Minimizar programa para a bandeja do sistema (system tray)


CristianD

Posts recomendados

Postado

Olá pessoal!

Preciso de uma ajuda para executar um programa em C++ que fique rodando em segundo plano na bandeja do sistema (system tray) recebendo dados da porta serial.

A parte do recebimento de dados pela porta serial não é o problema, mas executar o programa e deixá-lo na bandeja do sistema é.

Se alguém tiver um exemplo de algum trecho de código que deixe o programa rodando na bandeja do sistema, por favor postem!

Estou acustumado a usar o DEV C++, mas pode ser em qualquer outro programa.

Obrigado! :D

Postado

Vai fazer com interface gráfica? Vai utilizar alguma biblioteca especial (Qt, GTK+, etc.)? Para Windows, Linux, Unix, Mac ou multi-plataforma? Essas informações ajudariam muito...

Postado
Vai fazer com interface gráfica? Vai utilizar alguma biblioteca especial (Qt, GTK+, etc.)? Para Windows, Linux, Unix, Mac ou multi-plataforma? Essas informações ajudariam muito...

Gostaria de fazer uma interface gráfica sim, e para isso estava utilizando biblioteca Qt, mas nao sei se há transmissão serial com ela.

Inicialmente será para windows o programa.

Postado

Não sei se você está usando o desenhador de interface do Qt Creator ou se está escrevendo o código diretamente, mas sei que existe a classe QSystemTrayIcon dá uma olhada na documentação para ajudar: http://doc.qt.nokia.com/latest/qsystemtrayicon.html

Se quiser um código de exemplo aconselho o código da SpeedCrunch (aprendi muito a usar Qt estudando os códigos aqui http://speedcrunch.googlecode.com/files/speedcrunch-0.10.1.tar.gz ). Para ajudar a parte do código do QSystemTrayIcon em mainwindow.cpp :


void MainWindow::setSystemTrayIconEnabled( bool b )
{
if ( b && ! d->widgets.trayIcon && QSystemTrayIcon::isSystemTrayAvailable() ) {
d->conditions.trayNotify = true;
d->widgets.trayIcon = new QSystemTrayIcon( this );
d->widgets.trayIcon->setToolTip( "SpeedCrunch" );
d->widgets.trayIcon->setIcon( QPixmap(":/speedcrunch.png") );

d->menus.trayIcon = new QMenu( this );
d->menus.trayIcon->addAction( d->actions.editCopyLastResult );
d->menus.trayIcon->addSeparator();
d->menus.trayIcon->addAction( d->actions.sessionQuit );

d->widgets.trayIcon->setContextMenu( d->menus.trayIcon );
connect( d->widgets.trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
SLOT(handleSystemTrayIconActivation(QSystemTrayIcon::ActivationReason)) );
} else {
if ( d->widgets.trayIcon )
d->widgets.trayIcon->deleteLater();
d->widgets.trayIcon = 0;
}

d->settings->systemTrayIconVisible = b;
}

É claro que esse código é só uma base, mas acho que já ajuda um pouco :D

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!