Exe c++ se lance au démarrage windows mais s'exécute pas, lancé manuellement il [Résolu]

Signaler
Messages postés
3
Date d'inscription
jeudi 2 décembre 2010
Statut
Membre
Dernière intervention
2 décembre 2010
-
Messages postés
3
Date d'inscription
jeudi 2 décembre 2010
Statut
Membre
Dernière intervention
2 décembre 2010
-
Bonjour,
J'ai crée une petite appli test en c++ sur visual c++ 2010 express. Pas de message d'erreur.
- Lancé manuellement tout est OK (ca écrit un texte dans un fichier txt)
- Pour exécuter cette appli au démarage de windows, j'ai crée une clé regedit (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run), le programme se lance sans problème ( je le vois dans le gestionnaire des taches ) mais il ne s'exécute plus, le fichier texte n'est pas écrit !!!!!
Ou est le problème ?
Un paramètre dans les propriétés du projet vc++ ?
Merci de votre réponse

5 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
Pourquoi laisser un prog en mémoire qui ne fera plus rien ???
<fstream> ni quel qu'autre 'stream' n'a rien à faire dans du code Windows.

Teste ceci qui devrait écrire dans le dossier de l'exe.


#include <windows.h>

char szFILE[] = "Log2.txt";
char szMSG[] = "message";

void AppPathInitialize()
{
char szthis[304];
char* c = szthis + GetModuleFileName(0, szthis, 300);
while(*--c != '\\');
*(c + 1) = 0;
SetCurrentDirectory(szthis);
}

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hRIEN, LPSTR lpCmdLine, int nCmdShow)
{
HANDLE hfl;
DWORD rw;
hfl = CreateFile(szFILE, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0);
if(hfl == INVALID_HANDLE_VALUE) goto mainEXIT;
WriteFile(hfl, szMSG, 7, &rw, 0);
CloseHandle(hfl);
mainEXIT:
return 0;
}


ciao...
BruNews, MVP VC++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
ohe les devins et autres mages, une question pour vous.

En plus sérieux, VC++ compile du pur ASM jusqu'à de l'interprété (.NET), on ne peut donc rien savoir sur ce que tu as fait.

ciao...
BruNews, MVP VC++
Messages postés
3
Date d'inscription
jeudi 2 décembre 2010
Statut
Membre
Dernière intervention
2 décembre 2010

désolé ... oublié de mettre le code, le voici :

#include <fstream>
#include <windows.h>

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
static std::ofstream g_log("log2.txt");
g_log << "message" << std::endl;
Sleep(INFINITE);
return 0;
}
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
OUPS, oubli.

insère
AppPathInitialize();
sous le
DWORD rw;

ciao...
BruNews, MVP VC++
Messages postés
3
Date d'inscription
jeudi 2 décembre 2010
Statut
Membre
Dernière intervention
2 décembre 2010

merci pour ta réponse;
c'était un programme test que je voulais garder en mémoire pour bien vérifier qu'il se lancait ...
Sinon c'était en effet un problème de chemin : j'ai mis en absolu et ca marche ... mais je vais tout de même récupérer ta fonction AppPathInitialize
Merci encore