Gdi32 -->souris ligne masm32

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 706 fois - Téléchargée 25 fois

Contenu du snippet

Bonjour a tous.
Mon code se contente d'utiliser un timer regler a 10miliseconde afin de capturer,
les coordonnées de la souris (x,z) avec l'api -->"invoke GetCursorPos,addr pt" .
Ensuite on capture le handle de l'ecran en premier plan avec l'api--->"invoke GetDC,0" .
Ensuite on trace 4 ligne avec les apis = "invoke LineTo,deskdc,pt.x,pt.y" .
C'est tous bete,et c'est amusant! surtous pour les debutant...

Lorsque l'on bouge la souris, il y a plein de trait partous,ideal pour faire paniqué quelqu'un!
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\gdi32.inc
includelib \masm32\lib\gdi32.lib
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD

.DATA   
ClassName db "SimpleWinClass",0    
AppName db "Our First Window",0  

.DATA?   
Hasard db ?
hInstance HINSTANCE ?   
CommandLine LPSTR ?
deskdc    HDC ?
.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
LOCAL pt:POINT
Invoke SetTimer,hWnd,0,10, 0

.if uMsg == WM_TIMER

invoke GetDC,0
mov deskdc,eax

invoke GetCursorPos,addr pt 
invoke LineTo,deskdc,1,1
    invoke LineTo,deskdc,pt.x,pt.y
invoke LineTo,deskdc,800,1
    invoke LineTo,deskdc,pt.x,pt.y
 invoke LineTo,deskdc,800,600
    invoke LineTo,deskdc,pt.x,pt.y
    invoke LineTo,deskdc,1,600
    invoke LineTo,deskdc,pt.x,pt.y
    invoke ReleaseDC,0,deskdc

.endif

 invoke DefWindowProc,hWnd,uMsg,wParam,lParam
    

    ret

WndProc endp

end start

Conclusion :


Il y a des variables en trop,a vous de trouvé.Je n'ai pas la patience d'enlever tous

A voir également

Ajouter un commentaire

Commentaire

Messages postés
255
Date d'inscription
samedi 20 avril 2002
Statut
Membre
Dernière intervention
16 janvier 2007

Certes, quelques variables de trop! De plus, la fonction Randomize n'est pas reconnue. Néanmoins, la source est intéressante mais le problème est que même close, les fils sont toujours affichés. On est bon pour un reboot :)

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.