Código:
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
.data
classname db "notepad",0 ;classname del block de notas
nuevotitulo db "caption cambiado en MASM32",0
titulo db "ejemplos de saltos y etiquetas",0
mensajeencontrado db "Se encontró el classname",0
mensajenoencontrado db "No se encontró el classname",0
.data?
controlador dd ?
.code
inicio:
invoke FindWindow, addr classname, NULL
mov controlador, eax
cmp controlador,0 ; NULL
jne encontrado ;si es diferente de cero salta a encontrado
cmp controlador,0
je noencontrado ;si es igual a cero salta a noencontrado
ret
encontrado:
invoke MessageBox, NULL, addr mensajeencontrado, addr titulo, MB_OK
invoke SetWindowText, controlador,addr nuevotitulo ;cambia el titulo del block de notas
invoke ExitProcess, NULL
ret
noencontrado:
invoke MessageBox, NULL, addr mensajenoencontrado, addr titulo, MB_ICONERROR
invoke ExitProcess, NULL
end noencontrado
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
.data
classname db "notepad",0 ;classname del block de notas
nuevotitulo db "caption cambiado en MASM32",0
titulo db "ejemplos de saltos y etiquetas",0
mensajeencontrado db "Se encontró el classname",0
mensajenoencontrado db "No se encontró el classname",0
.data?
controlador dd ?
.code
inicio:
invoke FindWindow, addr classname, NULL
mov controlador, eax
cmp controlador,0 ; NULL
jne encontrado ;si es diferente de cero salta a encontrado
cmp controlador,0
je noencontrado ;si es igual a cero salta a noencontrado
ret
encontrado:
invoke MessageBox, NULL, addr mensajeencontrado, addr titulo, MB_OK
invoke SetWindowText, controlador,addr nuevotitulo ;cambia el titulo del block de notas
invoke ExitProcess, NULL
ret
noencontrado:
invoke MessageBox, NULL, addr mensajenoencontrado, addr titulo, MB_ICONERROR
invoke ExitProcess, NULL
end noencontrado
Como ven lo que hace es buscar al block de notas por su classname, si encuentra se va a la etiqueta encontrado donde muestra mensaje y cambia el caption del block, sino saca un mensaje de que no necontro, he abierto el block de notas antes de ejecutar mi code pero siempre me salta a la etiqueta "noencontrado", lo curioso es que cuando cambio los saltos condicionales y le pongo el incondicional JMP para que vaya directo a la etiqueta encontrado aún asi tambien este salta a noencontrado.
Código:
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
.data
classname db "notepad",0 ;classname del block de notas
nuevotitulo db "caption cambiado en MASM32",0
titulo db "ejemplos de saltos y etiquetas",0
mensajeencontrado db "Se encontró el classname",0
mensajenoencontrado db "No se encontró el classname",0
.data?
controlador dd ?
.code
inicio:
invoke FindWindow, addr classname, NULL
mov controlador, eax
jmp encontrado
ret
encontrado:
invoke MessageBox, NULL, addr mensajeencontrado, addr titulo, MB_OK
invoke SetWindowText, controlador,addr nuevotitulo ;cambia el titulo del block de notas
invoke ExitProcess, NULL
ret
noencontrado:
invoke MessageBox, NULL, addr mensajenoencontrado, addr titulo, MB_ICONERROR
invoke ExitProcess, NULL
end noencontrado
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
.data
classname db "notepad",0 ;classname del block de notas
nuevotitulo db "caption cambiado en MASM32",0
titulo db "ejemplos de saltos y etiquetas",0
mensajeencontrado db "Se encontró el classname",0
mensajenoencontrado db "No se encontró el classname",0
.data?
controlador dd ?
.code
inicio:
invoke FindWindow, addr classname, NULL
mov controlador, eax
jmp encontrado
ret
encontrado:
invoke MessageBox, NULL, addr mensajeencontrado, addr titulo, MB_OK
invoke SetWindowText, controlador,addr nuevotitulo ;cambia el titulo del block de notas
invoke ExitProcess, NULL
ret
noencontrado:
invoke MessageBox, NULL, addr mensajenoencontrado, addr titulo, MB_ICONERROR
invoke ExitProcess, NULL
end noencontrado
Pero cuando ejecuto solo la etiqueta inicio sin salto ni nada es decir: findwindow, mov y setwindowtext si me cambia el caption al block de notas:
Código:
.code
inicio:
invoke FindWindow, addr classname, NULL
mov controlador, eax
invoke SetWindowText, controlador, addr nuevotitulo
invoke ExitProcess, NULL
end inicio
inicio:
invoke FindWindow, addr classname, NULL
mov controlador, eax
invoke SetWindowText, controlador, addr nuevotitulo
invoke ExitProcess, NULL
end inicio
Please una mano con esto llevo un buen rato en esta dificultad, estuve buscando saltos y etiquetas en MASM32 pero solo encuentro ejemplo que no me sacan de duda, en este codigo ¿qué hice mal?