Neo_Fr
Messages postés
653
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
10 novembre 2014
2
2 sept. 2008 à 22:46
Utilise GetModuleFileName..
Un exemple:
DWORD __stdcall CopyModuleTo(LPSTR lpszFolder)
{
char szInFile[MAX_PATH+4];
char szOutFile[MAX_PATH+4];
LPSTR lpsrc, lpdst;
HANDLE hInFile, hOutFile;
BYTE* lpData;
DWORD dwRET = 0, br, bw;
lpdst = szOutFile;
while(*lpdst++ = *lpszFolder++); lpdst--;
if(*(lpdst-1) !'\\') *lpdst++ '\\';
lpsrc = szInFile + GetModuleFileName(0, szInFile, sizeof(szInFile));
printf("%s\n", szInFile);
hInFile = CreateFile(szInFile, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
if(hInFile == INVALID_HANDLE_VALUE) return 0;
while(*lpsrc != '\\') lpsrc--;
while(*lpdst++ = *lpsrc++);
printf("%s\n", szOutFile);
hOutFile = CreateFile(szOutFile, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0);
if(hOutFile == INVALID_HANDLE_VALUE) goto _Error;
lpData = (BYTE*) HeapAlloc(GetProcessHeap(), HEAP_NO_SERIALIZE, 4096);
if(!lpData) goto _Error;
while(1)
{
if(!ReadFile(hInFile, lpData, 4096, &br, 0)) goto _Error;
if(!br) break;
if(!WriteFile(hOutFile, lpData, br, &bw, 0)) goto _Error;
dwRET += bw;
}
_Error:
if(lpData) HeapFree(GetProcessHeap(), HEAP_NO_SERIALIZE, lpData);
if(hOutFile) CloseHandle(hOutFile);
CloseHandle(hInFile);
return dwRET;
}
int main(void)
{
DWORD i;
i = CopyModuleTo("C:\");
printf("%i octet ecrits\n", i);
system("PAUSE");
return 0;
}
Neo_Fr