begin process at 2010 03 18 01:02:05
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

c et asm

 > LISTER VOS FICHIER TEMPORAIRE DANS UNE LISTBOX MASM32

LISTER VOS FICHIER TEMPORAIRE DANS UNE LISTBOX MASM32


 Information sur la source

 Description

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

  • .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
.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



 Sources du même auteur

CHEMIN DES REPERTOIRES SYSTEM,WINDOWS,TEMPORAIRE,COURANT [MA...
COSINUS D'UN ANGLE EN DEGRÉS MASM32
TEXTBOX,BOUTON,TIMER MASM32
AFFICHER UNE CHAINE DE CARACTERE MASM32
GENERE UN NOM AU HAZARD

 Sources de la même categorie

Source avec Zip MOT PALINDROME par Tinsalhi
EXECUTE /USR/BIN/ID par 0x0syscall
BIBLIOTHEQUE POUR LE 8086 par flory_
.:| CONVERSION D'UNE CHAINE EN MAJUSCULE |:. par fenkouch
PROGRAMME DE TRI (CROISSANT) D'UN TABLEAU EN ASSEMBLEUR DU D... par monticarlo

Commentaires et avis

Commentaire de BruNews le 08/03/2004 22:57:23 administrateur CS

Faut revoir ta boucle, on ne devrait trouver qu'une seule fois:
invoke SendMessage,hWnd,LB_ADDSTRING,0,ADDR result.cFileName

Il y a des registres, hWnd y aurait bien trouve sa place dans une boucle plutot que de lire la memoire a chaque tour.

Tu vois l'utilite d'un bloc 'WinMain' dans un prog ASM ??? tu empiles 4 params pour rien, tout ce que fait WinMain se faisait aussi bien sans.

Pour conclure: Essaie donc d'ecrire de l'ASM plutot que le sabir permis par MASM, tu auras plus de chance de progresser.

Bonne prog,

BruNews, Admin CS, MVP Visual C++

Commentaire de Vv20oX le 08/03/2004 23:33:00

Alors,si tu veux,tu n'as qu'a t'amusé a le remodifier...
En bref:
Vive les Apis , masm, et le 32bit.
Conclusion:
Je vais me mettre a programmer avec un pb15!
:-)
Bonne prog.

Commentaire de BruNews le 08/03/2004 23:43:07 administrateur CS

Vive les Apis , masm, et le 32bit.
Bien evidemment, ce n'est pas moi en tant que MVP qui dirait le contraire.
MASM32 permet tout a fait d'ecrire du bon asm optimise.

.model flat,stdcall
option casemap:none
option prologue:none
option epilogue:none

Voila deja un moyen de ne pas le laisser faire ce qu'il veut.

Penses-tu que tu donnes envie aux gens de t'aider avec tes reponses ?

 Ajouter un commentaire




Nos sponsors


Appels d'offres

Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,749 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales