Autore: Fabio Di Matteo
Ultima revisione: 06/05/2014
Puo' essere necessario,in alcune circostanze, far si che la propria applicazione venga avviata automaticamente all'avvio della sessione grafica della gui del nostro sistema operativo. Di seguito le istruzioni necessarie in base al sistema operativo.
Sui istemi Gnu/Linux si segue (di solito) la procedura standard proposta da freedesktop, ovvero si copia il file dell'applicazione(.desktop
) installata nel sistema da /usr/share/applications/[mia app] in /home/[mio utente]/.config/autostart/ ecco di seguito come fare con le Qt:
#include <QDir> #include <QSettings> ... if (QDir(QDir::homePath()+"/.config/autostart").exists()) { if (QFile::exists("/usr/share/applications/logout.desktop")) { QFile::copy("/usr/share/applications/logout.desktop", QDir::homePath()+"/.config/autostart/logout-fml.desktop"); } }
dove logout.desktop
e' il file .desktop del mio programma.
Per la rimozione della nostra applicazione dall'elenco delle applicazioni in esecuzione automatica basta rimuovere il file appena copiato :
#include <QDir> #include <QSettings> ... if (QDir(QDir::homePath()+"/.config/autostart/logout.desktop").exists()) { QFile::remove(QDir::homePath()+"/.config/autostart/logout.desktop"); }
Per quanto riguarda la versione win32 creeremo una chiave di registro per l'utente corrente all'interno di HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run :
#include <QSettings> ... QSettings registry("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat); registry.setValue("Logout-fml", QCoreApplication::applicationFilePath().replace('/','\\'));
Per rimuovere la chiave invece:
#include <QSettings> ... QSettings registry("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat); registry.remove("Logout-fml");