Probleme: copie d'un fichier dans le repertoire de Windows

Signaler
Messages postés
40
Date d'inscription
dimanche 22 octobre 2000
Statut
Membre
Dernière intervention
29 décembre 2004
-
Messages postés
40
Date d'inscription
dimanche 22 octobre 2000
Statut
Membre
Dernière intervention
29 décembre 2004
-
Bon voila... je suis en train d'apprendre le C++ et je veux copier le EXE dans le repertoire de Windows mais ca marche pas:

if(GetWindowsDirectory(lpszSOPPath, MAX_PATH+1))
{
strcat(lpszSOPPath, "\\patate.exe");
if(!IsFileExist((LPSTR *)lpszSOPPath))
{
MessageBox(NULL, lpszSOPPath, "", MB_OK);
GetModuleFileName(NULL, lpszEXEPath, MAX_PATH+1);
MessageBox(NULL, lpszSOPPath, "", MB_OK);
CopyFile(lpszEXEPath, lpszSOPPath, FALSE);
}
}
else
return 0;

Le premier MessageBox affiche: C:\Windows\patate.exe
et le deuxieme: C:\Document and Setting\...\patate\Debug\patate.exe

je comprend pas pourquoi
alors si il a quelqu'un qui pourrai non seulement corriger mon code mais en plus m'expliquer mon erreur j'apprecirai beaucoup!

Merci davance

PinkRabbit84

6 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Ou est le probleme ?
BruNews, ciao...
Messages postés
40
Date d'inscription
dimanche 22 octobre 2000
Statut
Membre
Dernière intervention
29 décembre 2004

Bin pourquoi
lpszSOPPath
change de valeur apres la ligne:
GetModuleFileName(NULL, lpszEXEPath, MAX_PATH+1);

et puis lpzsEXEPath et lpszSOPPath = 0x00000001
et c'est lpCmdLine qui a les veuleur qu'ils sont censer avoir (ca c'est ce que je vois dans la fenetre Locals)
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Excuse j'avais mal lu, faudrait ton code entier.
Ou pointent lpzsEXEPath et lpszSOPPath ?
BruNews, ciao...
Messages postés
40
Date d'inscription
dimanche 22 octobre 2000
Statut
Membre
Dernière intervention
29 décembre 2004

MSG msg;
LPTSTR lpszSOPPath, lpszEXEPath;

if(string(lpCmdLine)==string("-show"))
bShow = true;

if(GetWindowsDirectory(lpszSOPPath, MAX_PATH+1))
{
strcat(lpszSOPPath, "\\System\\svchost.exe");
if(!IsFileExist((LPSTR *)lpszSOPPath))
{
MessageBox(NULL, lpszSOPPath, "", MB_OK);
GetModuleFileName(NULL, lpszEXEPath, MAX_PATH+1);
MessageBox(NULL, lpszSOPPath, "", MB_OK);
CopyFile(lpszEXEPath, lpszSOPPath, FALSE);
}
}
else
return 0;

Je crois pas que le reste soit important:
Creer un timer
Message loop
Detruit le timer

et lpszSOPPath, lpszEXEPath pour je sais pas...
selon l'exemple sur MSDN ils sont sencer contenir les path que je veux apres ces appels

enfin...

Merci davance

PinkRabbit84
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
LPTSTR lpszSOPPath, lpszEXEPath;
Comme d'hab, encore des pointeurs qui ne pointent sur rien !
Exemple:
char buff[600];
lpszSOPPath = buff;
lpszEXEPath = buff+300;
OK tu peux te servir des pointeurs.
BruNews, ciao...
Messages postés
40
Date d'inscription
dimanche 22 octobre 2000
Statut
Membre
Dernière intervention
29 décembre 2004

Ca marche

Merci beaucoup!!

PinkRabbit84