IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage C++ Discussion :

Exécuter programme C++ au démarrage de Windows


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 56
    Par défaut Exécuter programme C++ au démarrage de Windows
    Bonjour,
    J'ai développé une application en C++ objet permettant de crypter-décrypter des fichiers à l'aide d'un fichier-dictionnaire.

    Etant donné que j'utilise souvent cette application, je souhaiterais savoir comment faire pour qu'elle se lance des le démarrage de Windows ( comme Skype par exemple ):

    De préférence sans avoir à utiliser le planificateur de tâche.
    Sinon si vous connaissez des méthodes en C ou autre permettant de créer des tâches planifiées de façon automatique, je prend aussi.

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 33
    Par défaut
    La méthode la plus simple que je connaisse pour faire ça est de spécifier une clé de registre dans HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run.

    Voici un exemple de code pour faire ça : http://vcpptips.wordpress.com/tag/regopenkeyex/

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 56
    Par défaut
    Merci, le soucis est que je ne vois pas comment ajouter cette fonction a mon code, sa ressemble a du MFC si mes souvenirs sont bon.
    Mais je code en C++ avec Code::Blocks, et il n'a pas l'air de reconnaitre les type CString et autre..
    Comment faire ?

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 33
    Par défaut
    Ah oui, désolé, puisque tu citais Windows, j'ai automatiquement pensé que tu codais sur Visual Studio et donc que les MFCs ne seraient pas un problème. Réflexe idiot.

    Donc je t'ai traduit le code donné dans la source en win32/STL puisqu'il me semble que tu as accès par défaut à l'API win32 sous Code::Blocks :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    #include <windows.h>
     
    void run_app_on_windows_startup( void )
    {
    	HKEY			hkey;
    	std::string		key_name( "le_nom_de_ta_clé_qui_n'a_pas_d'importance" );
    	std::string		app_path( "le\\chemin\\absolu\\de\\ton\\app\\avec\\des\\doubles\\backslashs" );  
     
    	/** Open Run Registry location */
    	LONG ret = RegOpenKeyEx(	HKEY_LOCAL_MACHINE,  
    					"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
    					0L,
    					KEY_WRITE | KEY_WOW64_64KEY,
    					&hkey );
     
    	if ( ret == ERROR_SUCCESS )
    	{
    		/* Set full application path with a keyname to registry */
    		ret = RegSetValueEx(	hkey,
    					key_name.c_str(),
    					0,      
    					REG_SZ,    
    					reinterpret_cast< const BYTE* >( app_path.c_str() ),
    					REG_SZ );
     
    		if( ret == ERROR_SUCCESS )
    			std::cout << "Set at startup has done successfully" << std::endl;
    		else
    			std::cerr << "Failed to set at startup" << std::endl;
    	}
    	else
    	{
    		std::cerr << "Failed to set at startup" << std::endl;
    	}
    }
    Par contre, j'ai testé chez moi, et ça ne fonctionne pas, RegOpenKeyEx n'arrive pas à ouvrir la clé (super l'aide à deux francs ). Je vais faire des recherches pour essayer de réparer ça.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 33
    Par défaut
    Problème solutionné! Il suffit tout simplement de lancer l'application en mode administrateur.

    source : http://social.msdn.microsoft.com/For...6-b2956881b038

    Ca a très bien fonctionné chez moi. J'ai aussi édité le code précédent pour rajouter le flag KEY_WOW64_64KEY à RegOpenKeyEx, car il est apparemment nécessaire pour que ça fonctionne sur la version 64 bits de Windows.

  6. #6
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    Autre solution, placer ton exe, ou un raccourci vers ton exe dans:
    C:\Users\[USER]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

    Plus rapide / simple à mettre en place, mais l'utilisation du registre est probablement une meilleure idée.

Discussions similaires

  1. Réponses: 5
    Dernier message: 19/06/2013, 21h26
  2. lancement d'un programme .exe au démarrage de windows.
    Par wolverine1987 dans le forum Windows XP
    Réponses: 4
    Dernier message: 13/05/2009, 09h13
  3. Réponses: 3
    Dernier message: 03/05/2007, 12h44
  4. Lancer un programme au démarrage de windows
    Par jejeb dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 25/03/2006, 21h32
  5. Comment lancer un programme au démarrage de Windows ?
    Par nesquik dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 29/07/2005, 17h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo