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

Résolu
rv2010 Messages postés 3 Date d'inscription jeudi 2 décembre 2010 Statut Membre Dernière intervention 2 décembre 2010 - 2 déc. 2010 à 12:12
rv2010 Messages postés 3 Date d'inscription jeudi 2 décembre 2010 Statut Membre Dernière intervention 2 décembre 2010 - 2 déc. 2010 à 16:52
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

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 déc. 2010 à 15:21
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++
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 déc. 2010 à 13:06
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++
0
rv2010 Messages postés 3 Date d'inscription jeudi 2 décembre 2010 Statut Membre Dernière intervention 2 décembre 2010
2 déc. 2010 à 13:13
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;
}
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 déc. 2010 à 15:22
OUPS, oubli.

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

ciao...
BruNews, MVP VC++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rv2010 Messages postés 3 Date d'inscription jeudi 2 décembre 2010 Statut Membre Dernière intervention 2 décembre 2010
2 déc. 2010 à 16:52
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
0
Rejoignez-nous