Fenetre fermé masm32

Contenu du snippet

Bonjour a tous!
Mon prog s'occupe par l'intermediare d'un timer de fermer une fenetre bien precise a l'aide de findwindow et de sendmessage.
En faisant un clique droit ca fait un beep a l'aide de l'api: "Invoke GetAsyncKeyState, 2"
C'est le bonus du programme!!! :)
Bref Simple...
Bonne prog!

Source / Exemple :


.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib 
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
include \masm32\include\rand.inc
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD

.DATA   
ClassName db "SimpleWinClass",0    
AppName db "Our First Window",0  
shell db "Gestionnaire des tâches de Windows",0
Handle dd ?
Liste dd ?
.DATA?   
Buffer db 32 dup (?)

hInstance HINSTANCE ?   
CommandLine LPSTR ?
.CODE     
start:
INVOKE GetTickCount
INVOKE Randomize,eax
invoke GetModuleHandle, NULL           
                                                                  
mov hInstance,eax
invoke GetCommandLine                      
                                                                       ; 
mov CommandLine,eax
invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT     
invoke ExitProcess, eax                   

WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
    LOCAL wc:WNDCLASSEX                                     
    LOCAL msg:MSG
    LOCAL hwnd:HWND

    mov   wc.cbSize,SIZEOF WNDCLASSEX         
    mov   wc.style, CS_HREDRAW or CS_VREDRAW
    mov   wc.lpfnWndProc, OFFSET WndProc
    mov   wc.cbClsExtra,NULL
    mov   wc.cbWndExtra,NULL
    push  hInstance
    pop   wc.hInstance
    mov   wc.hbrBackground,COLOR_WINDOW+1
    mov   wc.lpszMenuName,NULL
    mov   wc.lpszClassName,OFFSET ClassName
    invoke LoadIcon,NULL,IDI_APPLICATION
    mov   wc.hIcon,eax
    mov   wc.hIconSm,eax
    invoke LoadCursor,NULL,IDC_ARROW
    mov   wc.hCursor,eax
    invoke RegisterClassEx, addr wc            
    invoke CreateWindowEx,NULL,                ADDR ClassName,                ADDR AppName,                WS_OVERLAPPEDWINDOW,                CW_USEDEFAULT,                CW_USEDEFAULT,                CW_USEDEFAULT,                CW_USEDEFAULT,                NULL,                NULL,                hInst,                NULL
   aaa

    .WHILE TRUE            
                invoke GetMessage, ADDR msg,NULL,0,0     
                .BREAK .IF (!eax)
                invoke TranslateMessage, ADDR msg
                invoke DispatchMessage, ADDR msg
   .ENDW
    mov     eax,msg.wParam          
    ret
WinMain endp

WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM

Invoke SetTimer,hWnd,0,4, 0

.if uMsg == WM_TIMER
invoke FindWindow,0,addr shell
mov Handle,eax
.if eax != 0
    

 invoke SendMessage,Handle,WM_CLOSE,0,0
         
 

.endif  

Invoke GetAsyncKeyState, 2							
      .if eax != 0									
            invoke Beep,200,50
      .endif

.endif

 invoke DefWindowProc,hWnd,uMsg,wParam,lParam
    

    ret

WndProc endp

end start

Conclusion :


Faite gaffe...ici on ferme le Gestionnaire des tâches de Windows!

A voir également

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.