ID контрола пишется в нижней части слова wparam
и находятся как: mov eax,[wparam]
and eax,0FFFFh
в eax ID контрола, далее
;Если нажата кнопка то
jne .finish
Зачем у тебя и так условие IF работает, зачем
тебе JNE? Убирай...
Дальше у нас
invoke SendMessage,[hwnde],WM_GETTEXT,100,eax
У тебя eax не инициализирован, русским языком в
eax хрен знает что, и запишется твоя строка не
известно куда, что может быть плачевно для
программы...
лучше использовать какой либо буфер к примеру:
....
string_buffer rb 100
...
invoke SendMessage,[hwnde],WM_GETTEXT,100,string_buffer
...
Дальше:
;сравниваем eax с 9
И сразу вопрос почему с 9? 9h - это знак TAB, а 9 на клаве
это по памяти в десятичной системе 64 (надо уточнить могу
ошибаться) и то строка будет содержать завершающий нуль.
Тем более, что сообщение WM_GETTEXT требует в
lparam буфер на текст к примеру string_buffer
Ты получаешь строку, а не число
ЭТО РАЗНЫЕ ТИПЫ ДАННЫХ!!!
Правильнее будет:
...
password db '9',0
...
invoke lstrcmp,string_buffer, password
.if eax = 0 ; Если eax = 0 строки одинаковы
invoke MessageBox,0,0,0,0
.else
invoke MessageBox,0,yy,0,0
.endif
Вот пожалуй и все, а кстати не забудь в конце:
.end start