Cita de: Eternal Idol en 15 Marzo 2010, 18:16 PM
Es dificil saber sin el codigo pero en teoria esos mensajes funcionaron bien ...
te dejo el codigo completo, espero que sea una pelotudez.
Código (asm) [Seleccionar]
format PE GUI 4.0
entry start
include 'win32w.inc'
section '.data' data readable writeable
_class TCHAR 'CocusUI®',0
_title TCHAR 'Window de prueba',0
_error TCHAR 'Startup failed.',0
_dlgLV TCHAR 'SysListView32',0
_cap1 TCHAR 'LV32',0
dlglvheader dd ?
dlglvhwnd dd ?
dlghwnd dd ?
dlghdc dd ?
tmp dd ?
wc WNDCLASS 0,WindowProc,0,0,NULL,NULL,NULL,COLOR_BTNFACE+1,NULL,_class
msg MSG
lvi LV_ITEM
lvc LV_COLUMN
hdi HD_ITEM
section '.text' code readable executable
start:
invoke GetModuleHandle,0
mov [wc.hInstance],eax
invoke LoadIcon,0,IDI_APPLICATION
mov [wc.hIcon],eax
invoke LoadCursor,0,IDC_ARROW
mov [wc.hCursor],eax
invoke RegisterClass,wc
test eax,eax
jz error
invoke CreateWindowEx,0,_class,_title,WS_VISIBLE+WS_DLGFRAME+WS_SYSMENU,128,128,256,192,NULL,NULL,[wc.hInstance],NULL
test eax,eax
jz error
mov [dlghwnd],eax
invoke GetDC,eax
mov [dlghdc],eax
jmp createlv
createlv:
invoke CreateWindowEx,0,_dlgLV,NULL,WS_CHILD + WS_TABSTOP + WS_VISIBLE + LVS_REPORT,5,5,240,155,[dlghwnd],0,[wc.hInstance],NULL
mov [dlglvhwnd],eax
invoke SetWindowLong,[dlglvhwnd], GWL_WNDPROC, WindowProc2
invoke ShowWindow,[dlglvhwnd],SW_SHOW
mov [lvi.mask], LVIF_TEXT ;or LVIF_STATE
mov [lvi.iItem], 0
mov [lvi.iSubItem], 0
mov [lvi.pszText], _cap1
invoke SendMessage,[dlglvhwnd], LVM_INSERTITEM,0,[lvi]
cmp eax,-1
ja msg_loop
invoke MessageBeep, MB_OK
msg_loop:
invoke GetMessage,msg,NULL,0,0
cmp eax,1
jb end_loop
jne msg_loop
invoke TranslateMessage,msg
invoke DispatchMessage,msg
jmp msg_loop
error:
invoke MessageBox,NULL,_error,NULL,MB_ICONERROR+MB_OK
end_loop:
invoke ExitProcess,[msg.wParam]
proc WindowProc2 uses ebx esi edi, hwnd,umsg,wparam,lparam
invoke DefWindowProc,[hwnd],[umsg],[wparam],[lparam]
cmp [umsg], LVM_INSERTITEM
je .beep
ret
.beep:
invoke MessageBeep, MB_OK
ret
endp
proc WindowProc uses ebx esi edi, hwnd,wmsg,wparam,lparam
cmp [wmsg],WM_DESTROY
je .wmdestroy
.defwndproc:
invoke DefWindowProc,[hwnd],[wmsg],[wparam],[lparam]
jmp .finish
.wmdestroy:
invoke DestroyWindow,[dlglvhwnd]
invoke PostQuitMessage,0
xor eax,eax
.finish:
ret
endp
section '.idata' import data readable writeable
library kernel32,'KERNEL32.DLL',\
user32,'USER32.DLL',\
shell32,'SHELL32.DLL'
include 'api\kernel32.inc'
include 'api\user32.inc'
include 'api\shell32.inc'
Saludos y gracias por las respuestas ![;) ;)](https://forum.elhacker.net/Smileys/navidad/wink.gif)