Soyez le premier à donner votre avis sur cette source.
Snippet vu 4 496 fois - Téléchargée 31 fois
; ######################################################################### .386 .model flat, stdcall option casemap :none ; case sensitive ; ######################################################################### include \masm32\include\windows.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib ; ######################################################################### .data ; # variable dynamiques # filename dd 0 dirname dd 0 .code Mtitle db "codé par BlackWizzard",0 message db "fichier copié avec succes :)",0 erreurmsg db "erreur durant la copie :(",0 newname db "test.exe",0 start: push 46h ; taille maximum buffer (+ si crainte du buffer overflow) push offset filename ; variable qui va accueillir la reponse push 0 ; sais pas a koi ça correspond call GetModuleFileNameA ; appel de l'API ; on connais le nom de notre programme, on commence la copie push offset newname ; argument "destination" push offset filename ; argument "fichier source" call CopyFileA ; on appel l'API cmp eax, 0 ; si eax = 0: erreur (fichier deja existant, etc...) jz short erreur ; dans ce cas, on va direct a "erreur:" pour signaler push MB_OK ; MB_OK = 0 push offset Mtitle ; le titre push offset message ; le message push 0 ; sais pas call MessageBox ; on appel l'API push 0 ; sais pas call ExitProcess ; on appel l'API pour terminer le programme erreur: ; en cas d'erreur push MB_OK ; MB_OK = 0 ; blablabla...G deja expliké plus haut... push offset Mtitle push offset erreurmsg push 0 call MessageBox push 0 call ExitProcess end start
9 août 2003 à 11:02
Sur win32, HeapAlloc ou VirtualAlloc.
27 juil. 2003 à 03:30
1 : db Max_Path dup(0) <== max_path=Taille max d'un chemin sous win qui peut etre bien supèrieur a 256chars....
2 : Tu fais un LocalAlloc ou GlobalAlloc (api) sur ton pointeur puis un LocalFree ou GlobalFree des que tu n'utilise plu ton pointer ...
L' Alloc est et de loin la meilleur solution....
Bon Coding...
ManChesTer.
23 juil. 2003 à 02:45
on m'a deja dit plus haut dans les commentaire...
G pas corrigé la source encore..
22 juil. 2003 à 20:55
GetModuleFileNameA prend pour 2nd paramètre un buffer pour y stocker le nom de ton EXE. Toi tu lui fourni un DWORD (qui est aussi un buffer ..... mais de 4 octets)
Ce que je te conseille :: à la place de
filename dd 0
dirname dd 0
tu mets
filename db 260 dup (0)
dirname db 260 dup (0)
comme ça : adieu ton problème ...
18 juil. 2003 à 00:52
Je crois qu'il existe une version plus récente fournie avec Delphi, et également récupérable avec l'update tool de Dev C++.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.