Démarrer prog en même temps que Windows

Le
WonderMan
Bonjour,

J'ai développé un programme en C++ (MFC) qui utilise un fichier .INI
placé dans le même dossier que l'EXE pour récupérer des données dont il
a besoin au démarrage.
Il y a donc dans le code quelque chose du genre (en simplifiant) :

nomDossier = GetCurrentDirectory() ==> Récupère le dossier de l'EXE
nomFichier = nomDossier + "\MonAppli.ini";
//
GetPrivateProfileString(xxx,xxx,xxx,nomFichierINI); ==> Lecture des
données dans le fichier INI

J'ai vérifié le fonctionnement, et tout marche parfaitement quand je
double clique sur l'EXE pour le lancer.
Seulement, j'ai ensuite voulu inscrire mon EXE dans la base de
registres pour que l'application démarre automatiquement lorsque
Windows démarre. Et là, je constate que si mon programme démarre bien
au démarrage de Windows, il se comporte exactement comme s'il ne
trouvait pas le fichier INI qui contient les données qu'il doit lire en
démarrant.

Je soupçonne fortement que dans ce cas précis, la fonction
GetCurrentDirectory() ne renvoie pas le bon nom de dossier (puisque
c'est sur elle que je me base pour créer le nom complet de mon fichier
INI), mais je ne comprend pas pourquoi. Et surtout, comment faire pour
que mon application démarre bien en même temps que Windows, mais arrive
à localiser son fichier INI ?

Merci de vos conseils et idées.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
WonderMan
Le #9741161
WonderMan avait énoncé :
Bonjour,

J'ai développé un programme en C++ (MFC) qui utilise un fichier .INI placé
dans le même dossier que l'EXE pour récupérer des données dont il a besoin au
démarrage.
Il y a donc dans le code quelque chose du genre (en simplifiant) :

nomDossier = GetCurrentDirectory() ==> Récupère le dossier de l'EXE
nomFichier = nomDossier + "\MonAppli.ini";
/.../
GetPrivateProfileString(xxx,xxx,xxx,nomFichierINI); ==> Lecture des données
dans le fichier INI

J'ai vérifié le fonctionnement, et tout marche parfaitement quand je double
clique sur l'EXE pour le lancer.
Seulement, j'ai ensuite voulu inscrire mon EXE dans la base de registres pour
que l'application démarre automatiquement lorsque Windows démarre. Et là, je
constate que si mon programme démarre bien au démarrage de Windows, il se
comporte exactement comme s'il ne trouvait pas le fichier INI qui contient
les données qu'il doit lire en démarrant.

Je soupçonne fortement que dans ce cas précis, la fonction
GetCurrentDirectory() ne renvoie pas le bon nom de dossier (puisque c'est sur
elle que je me base pour créer le nom complet de mon fichier INI), mais je ne
comprend pas pourquoi. Et surtout, comment faire pour que mon application
démarre bien en même temps que Windows, mais arrive à localiser son fichier
INI ?



PS : J'ai bien pensé à mettre le fichier INI de mon application dans le
dossier de Windows, et remplacer l'appel à GetCurrentDirectory() par
GetWindowsDirectory(), ce qui pourrait peut-être résoudre le problème,
mais si c'était possible, je préfèrerais laisser le fichier INI dans le
même dossier que le fichier EXE ?
Christian ASTOR
Le #9741151
WonderMan wrote:

Je soupçonne fortement que dans ce cas précis, la fonction
GetCurrentDirectory() ne renvoie pas le bon nom de dossier



Il faut généralement utiliser GetModuleFileName()
WonderMan
Le #9741141
Christian ASTOR a utilisé son clavier pour écrire :
WonderMan wrote:

Je soupçonne fortement que dans ce cas précis, la fonction
GetCurrentDirectory() ne renvoie pas le bon nom de dossier



Il faut généralement utiliser GetModuleFileName()



Je testerai cette solution.
Merci de votre réponse.
Publicité
Poster une réponse
Anonyme