Bonjour a tous,
Ce code Liste les fichiers temporaires dans une listbox.
Pas le temps d'expliquer le fonctionnement,mais il suffit de jeter un coups d'oeil
aux apis pour comprendre et a quelque bout de code simple!
Bon coding!
Source / Exemple :
.386
.model flat, stdcall
option casemap :none
include \masm32\include\windows.inc
include \masm32\include\gdi32.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\gdi32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
szText MACRO Name, Text:VARARG
LOCAL lbl
jmp lbl
Name db Text,0
lbl:
ENDM
m2m MACRO M1, M2
push M2
pop M1
ENDM
return MACRO arg
mov eax, arg
ret
ENDM
WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD
WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
TopXY PROTO :DWORD,:DWORD
.data
szDisplayName db "Fichier Temporaire:",0
CommandLine dd 0
hWnd dd 0
hInstance dd 0
lpfnWndProc dd 0
EnPlus db "*.*",0
.DATA?
CheminTemp db 256 dup(?)
buffer2 db 256 dup(?)
result WIN32_FIND_DATA <?>
hdl dd ?
.code
start:
invoke GetModuleHandle, NULL
mov hInstance, eax
invoke GetCommandLine
mov CommandLine, eax
invoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULT
invoke ExitProcess,eax
WinMain proc hInst :DWORD,
hPrevInst :DWORD,
CmdLine :DWORD,
CmdShow :DWORD
LOCAL msg :MSG
LOCAL Wwd :DWORD
LOCAL Wht :DWORD
LOCAL Wtx :DWORD
LOCAL Wty :DWORD
mov Wwd, 300
mov Wht, 200
invoke GetSystemMetrics,SM_CXSCREEN
invoke TopXY,Wwd,eax
mov Wtx, eax
invoke GetSystemMetrics,SM_CYSCREEN
invoke TopXY,Wht,eax
mov Wty, eax
szText szClassName,"LISTBOX"
invoke CreateWindowEx,WS_EX_PALETTEWINDOW or WS_EX_CLIENTEDGE,
ADDR szClassName,
ADDR szDisplayName,
WS_OVERLAPPEDWINDOW or WS_VSCROLL or LBS_HASSTRINGS or LBS_NOINTEGRALHEIGHT or LBS_DISABLENOSCROLL, Wtx,Wty,Wwd,Wht,
NULL,NULL,
hInst,NULL
mov hWnd,eax
invoke SetWindowLong,hWnd,GWL_WNDPROC,ADDR WndProc
mov lpfnWndProc, eax
invoke GetStockObject,ANSI_FIXED_FONT
invoke SendMessage,hWnd,WM_SETFONT,eax,0
;Trouve le repertoire des fichiers temporaires <-----------
invoke GetTempPath,MAX_PATH,addr CheminTemp
;---------------------------------------------------------------
Invoke lstrcat,addr CheminTemp,addr EnPlus
invoke FindFirstFile, ADDR CheminTemp, ADDR result
.IF eax!=INVALID_HANDLE_VALUE
mov hdl, eax
invoke SendMessage,hWnd,LB_ADDSTRING,0,ADDR result.cFileName
le_loop:
invoke FindNextFile, hdl, ADDR result
cmp eax, 0
je fini
invoke SendMessage,hWnd,LB_ADDSTRING,0,ADDR result.cFileName
jmp le_loop
.ELSE
.ENDIF
fini:
invoke FindClose, hdl
invoke ShowWindow,hWnd,SW_SHOWNORMAL
invoke UpdateWindow,hWnd
StartLoop:
invoke GetMessage,ADDR msg,NULL,0,0
cmp eax, 0
je ExitLoop
invoke TranslateMessage, ADDR msg
invoke DispatchMessage, ADDR msg
jmp StartLoop
ExitLoop:
return msg.wParam
WinMain endp
WndProc proc hWin :DWORD,
uMsg :DWORD,
wParam :DWORD,
lParam :DWORD
.if uMsg == WM_CLOSE
.elseif uMsg == WM_DESTROY
invoke PostQuitMessage,NULL
return 0
.endif
invoke CallWindowProc,lpfnWndProc,hWin,uMsg,wParam,lParam
ret
WndProc endp
TopXY proc wDim:DWORD, sDim:DWORD
shr sDim, 1
shr wDim, 1
mov eax, wDim
sub sDim, eax
return sDim
TopXY endp
end start
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.