begin process at 2010 03 15 15:43:00
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Tutoriels

 > ICONE SYSTRAY [MASM] (ICONE PERSONNALISABLE)

ICONE SYSTRAY [MASM] (ICONE PERSONNALISABLE)


 Information sur la source

Note :
Aucune note
Catégorie :Tutoriels Niveau :Initié Date de création :11/11/2002 Date de mise à jour :13/11/2002 15:39:21 Vu :4 763

Auteur : Cendra

Ecrire un message privé
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

permet de creer une icone pres de l'heure sur la barre des taches :)

- le fichier .RC :
;debut
#include "resource.h"
#define IDC_STATIC -1
1000 ICON "votre_icone.ico"
;fin

- le fichier .bat ( pour compiller tout ca )
REM DEBUT
"c:\masm32\bin\ml" /c /coff /Cp /I"c:\masm32\include" /I"c:\masm32\units" /Fo"icone.obj" "icone.asm"
"c:\masm32\bin\rc" /i"c:\masm32\include" /fo"icone.res" "icone.rc"
"c:\masm32\bin\link" /SUBSYSTEM:WINDOWS /LIBPATH:"c:\masm32\lib" /OUT:"icone.exe" "icone.obj" "icone.res"
REM FIN

- et le fichier .asm

Source

  • .386
  • .model flat,stdcall
  • option casemap:none
  • include \masm32\include\windows.inc
  • include \masm32\include\user32.inc
  • include \masm32\include\kernel32.inc
  • include \masm32\include\shell32.inc
  • includelib \masm32\lib\user32.lib
  • includelib \masm32\lib\kernel32.lib
  • includelib \masm32\lib\shell32.lib
  • WM_SHELLNOTIFY equ WM_USER+5
  • IDI_TRAY equ 0
  • IDM_RESTORE equ 1000
  • IDM_EXIT equ 1010
  • WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD
  • .data
  • ClassName db "TrayCendraClass",0
  • AppName db "Icone en systray",0
  • RestoreString db "Restaurer",0
  • ExitString db "Quitter",0
  • .data?
  • hInstance dd ?
  • note NOTIFYICONDATA <>
  • hPopupMenu dd ?
  • .code
  • start:
  • invoke GetModuleHandle, NULL
  • mov hInstance,eax
  • invoke WinMain, hInstance,NULL,NULL, 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 or CS_DBLCLKS
  • mov wc.lpfnWndProc, OFFSET WndProc
  • mov wc.cbClsExtra,NULL
  • mov wc.cbWndExtra,NULL
  • push hInst
  • pop wc.hInstance
  • mov wc.hbrBackground,COLOR_APPWORKSPACE
  • mov wc.lpszMenuName,NULL
  • mov wc.lpszClassName,OFFSET ClassName
  • invoke LoadIcon,hInstance,1000
  • mov wc.hIcon,eax
  • mov wc.hIconSm,eax
  • invoke LoadCursor,NULL,IDC_ARROW
  • mov wc.hCursor,eax
  • invoke RegisterClassEx, addr wc
  • invoke CreateWindowEx,WS_EX_CLIENTEDGE,ADDR ClassName,ADDR AppName,\
  • WS_OVERLAPPED+WS_CAPTION+WS_SYSMENU+WS_MINIMIZEBOX+WS_MAXIMIZEBOX+WS_VISIBLE,CW_USEDEFAULT,\
  • CW_USEDEFAULT,350,200,NULL,NULL,\
  • hInst,NULL
  • mov hwnd,eax
  • .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
  • LOCAL rect:RECT
  • .if uMsg==WM_CREATE
  • invoke CreatePopupMenu
  • mov hPopupMenu,eax
  • invoke AppendMenu,hPopupMenu,MF_STRING,IDM_RESTORE,addr RestoreString
  • invoke AppendMenu,hPopupMenu,MF_STRING,IDM_EXIT,addr ExitString
  • .elseif uMsg==WM_DESTROY
  • invoke DestroyMenu,hPopupMenu
  • invoke PostQuitMessage,NULL
  • .elseif uMsg==WM_SIZE
  • .if wParam==SIZE_MINIMIZED
  • mov note.cbSize,sizeof NOTIFYICONDATA
  • push hWnd
  • pop note.hwnd
  • mov note.uID,IDI_TRAY
  • mov note.uFlags,NIF_ICON+NIF_MESSAGE+NIF_TIP
  • mov note.uCallbackMessage,WM_SHELLNOTIFY
  • invoke LoadIcon,hInstance,1000
  • mov note.hIcon,eax
  • invoke lstrcpy,addr note.szTip,addr AppName
  • invoke ShowWindow,hWnd,SW_HIDE
  • invoke Shell_NotifyIcon,NIM_ADD,addr note
  • .endif
  • .elseif uMsg==WM_COMMAND
  • .if lParam==0
  • invoke Shell_NotifyIcon,NIM_DELETE,addr note
  • mov eax,wParam
  • .if ax==IDM_RESTORE
  • invoke ShowWindow,hWnd,SW_RESTORE
  • .else
  • invoke DestroyWindow,hWnd
  • .endif
  • .endif
  • .elseif uMsg==WM_SHELLNOTIFY
  • .if wParam==IDI_TRAY
  • .if lParam==WM_RBUTTONDOWN
  • invoke GetCursorPos,addr pt
  • invoke SetForegroundWindow,hWnd
  • invoke TrackPopupMenu,hPopupMenu,TPM_RIGHTALIGN or TPM_RIGHTBUTTON,pt.x,pt.y,NULL,hWnd,NULL
  • invoke PostMessage,hWnd,WM_NULL,0,0
  • .elseif lParam==WM_LBUTTONDBLCLK
  • invoke SendMessage,hWnd,WM_COMMAND,IDM_RESTORE,0
  • .endif
  • .endif
  • .else
  • invoke DefWindowProc,hWnd,uMsg,wParam,lParam
  • ret
  • .endif
  • xor eax,eax
  • ret
  • WndProc endp
  • end start
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\shell32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\shell32.lib

WM_SHELLNOTIFY equ WM_USER+5
IDI_TRAY equ 0
IDM_RESTORE equ 1000
IDM_EXIT	equ 1010
WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD

.data
ClassName 	db "TrayCendraClass",0
AppName  		db "Icone en systray",0
RestoreString	db "Restaurer",0
ExitString	 	db "Quitter",0

.data?
hInstance	dd ?
note NOTIFYICONDATA <>
hPopupMenu	dd ?

.code
start:
	invoke GetModuleHandle, NULL
	mov    hInstance,eax
	invoke WinMain, hInstance,NULL,NULL, 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 or CS_DBLCLKS
	mov   wc.lpfnWndProc, OFFSET WndProc
	mov   wc.cbClsExtra,NULL
	mov   wc.cbWndExtra,NULL
	push  hInst
	pop   wc.hInstance
	mov   wc.hbrBackground,COLOR_APPWORKSPACE
	mov   wc.lpszMenuName,NULL
	mov   wc.lpszClassName,OFFSET ClassName
	invoke LoadIcon,hInstance,1000
	mov   wc.hIcon,eax
	mov   wc.hIconSm,eax
	invoke LoadCursor,NULL,IDC_ARROW
	mov   wc.hCursor,eax
	invoke RegisterClassEx, addr wc
	invoke CreateWindowEx,WS_EX_CLIENTEDGE,ADDR ClassName,ADDR AppName,\
           WS_OVERLAPPED+WS_CAPTION+WS_SYSMENU+WS_MINIMIZEBOX+WS_MAXIMIZEBOX+WS_VISIBLE,CW_USEDEFAULT,\
           CW_USEDEFAULT,350,200,NULL,NULL,\
           hInst,NULL
	mov   hwnd,eax
	.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
	LOCAL rect:RECT
	.if uMsg==WM_CREATE
		invoke CreatePopupMenu
		mov hPopupMenu,eax
		invoke AppendMenu,hPopupMenu,MF_STRING,IDM_RESTORE,addr RestoreString
		invoke AppendMenu,hPopupMenu,MF_STRING,IDM_EXIT,addr ExitString
	.elseif uMsg==WM_DESTROY
		invoke DestroyMenu,hPopupMenu
		invoke PostQuitMessage,NULL
	.elseif uMsg==WM_SIZE
		.if wParam==SIZE_MINIMIZED
			mov note.cbSize,sizeof NOTIFYICONDATA
			push hWnd
			pop note.hwnd
			mov note.uID,IDI_TRAY
			mov note.uFlags,NIF_ICON+NIF_MESSAGE+NIF_TIP
			mov note.uCallbackMessage,WM_SHELLNOTIFY
			invoke LoadIcon,hInstance,1000
			mov note.hIcon,eax
			invoke lstrcpy,addr note.szTip,addr AppName
			invoke ShowWindow,hWnd,SW_HIDE
			invoke Shell_NotifyIcon,NIM_ADD,addr note
		.endif
	.elseif uMsg==WM_COMMAND
		.if lParam==0
			invoke Shell_NotifyIcon,NIM_DELETE,addr note
			mov eax,wParam
			.if ax==IDM_RESTORE
				invoke ShowWindow,hWnd,SW_RESTORE
			.else
				invoke DestroyWindow,hWnd
			.endif
		.endif
	.elseif uMsg==WM_SHELLNOTIFY
		.if wParam==IDI_TRAY
			.if lParam==WM_RBUTTONDOWN
				invoke GetCursorPos,addr pt
				invoke SetForegroundWindow,hWnd
				invoke TrackPopupMenu,hPopupMenu,TPM_RIGHTALIGN or TPM_RIGHTBUTTON,pt.x,pt.y,NULL,hWnd,NULL
				invoke PostMessage,hWnd,WM_NULL,0,0
			.elseif lParam==WM_LBUTTONDBLCLK
				invoke SendMessage,hWnd,WM_COMMAND,IDM_RESTORE,0
			.endif
		.endif
	.else
		invoke DefWindowProc,hWnd,uMsg,wParam,lParam		
		ret
	.endif
	xor eax,eax
	ret
WndProc endp

end start

 Conclusion

voila , j'espere que ca vous plaira ;)

Cendra


 Sources du même auteur

Source avec Zip CALCUL DE LA FRÉQUENCE DU CPU [MASM32]
CACHER L'EXECUTION SOUS 9X/ME [MASM32]

 Sources de la même categorie

Source avec Zip FLOATTOHEX CODE DE BRUNEWS RETRENSCRIS EN ASM PAR MOI par quoi
Source avec Zip [TUTO]PRISE EN MAIN ET CRÉATION DE .EXE À L'AIDE D'UN DÉBUGU... par rt15
Source avec Zip FPU SAMPLE 2. par tomart2005
Source avec Zip STARFIELD, SPHERE, CUBE, ROTATION 3D ET 2D EN UTILISANT LE F... par tomart2005
Source avec Zip REPRÉSENTATION D'UNE SPHÈRE EN 3D (FLAT SHADING) par Nasman

Commentaires et avis

Commentaire de Thomas46 le 29/09/2005 13:52:23

Hello,

sorry j'suis nul en ASM, je débute mais j'aurais aimé comprendre qqch:
Pourquoi y a-t-il chaque fois des ";" au début ?
Ce n'est pas censé être pour les commentaires ?

Merci d'avance pour l'explication

Commentaire de vincent2795 le 26/11/2008 18:43:36

Slt,
Ta source pourrais etre utile mais pour cela il faudrais la commenter...
Merci de faire cette effort.
je crois que sa va etre dur pour toi car je vien de trouver la source sur se site..
http://www.woodmann.com/RCE-CD-SITES/Iczelion/tut23.html
et donc elle nes pas commenter.... ya pus cas si mettre !!!
+

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

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,905 sec (4)

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