Воскресенье
02.02.2025
14:02
Форма входа
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Статистика

    OPEN SOURCE PROJECT

    [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
    • Страница 1 из 1
    • 1
    Где здесь ошибка??
    andXreiДата: Пятница, 08.05.2009, 19:12 | Сообщение # 1
    Майор
    Группа: Проверенные
    Сообщений: 95
    Репутация: 2
    Статус: Offline
    Вообщем вот код

    =======================================
    Доступно только для пользователей

    =======================================

    Почему он выдает в любом случае что eax не равно 9???

    Сообщение отредактировал andXrei - Пятница, 08.05.2009, 19:14
     
    fasmДата: Пятница, 08.05.2009, 23:09 | Сообщение # 2
    Admin
    Группа: Заблокированные
    Сообщений: 122
    Репутация: 5
    Статус: Offline
    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

     
    andXreiДата: Суббота, 09.05.2009, 10:32 | Сообщение # 3
    Майор
    Группа: Проверенные
    Сообщений: 95
    Репутация: 2
    Статус: Offline
    Quote
    invoke CreateWindowEx,0,classe,text1,WS_VISIBLE+WS_CHILD,65,40,150,20,[hwnd],1002,[wc.hInstance],0

    А как можно изменить шрифт текста (text1) и цвет???

    Сообщение отредактировал andXrei - Суббота, 09.05.2009, 10:34
     
    fasmДата: Понедельник, 11.05.2009, 10:16 | Сообщение # 4
    Admin
    Группа: Заблокированные
    Сообщений: 122
    Репутация: 5
    Статус: Offline
    Если цвет, то смотри инфу по WM_PAINT, а шрифт в исходнике:
    Прикрепления: 4169306.rar (6.5 Kb)
     
    andXreiДата: Понедельник, 11.05.2009, 13:31 | Сообщение # 5
    Майор
    Группа: Проверенные
    Сообщений: 95
    Репутация: 2
    Статус: Offline
    Со шрифтом разобрался, а вот с цветом нет
    Я использовал вместо WM_PAINT SetTextColor
    Но что то не получается
    Вот наброски чего получилось

    Code

    invoke CreateWindowEx,0,classe,text1,WS_VISIBLE+WS_CHILD,65,40,150,20,[hwnd],1002,[wc.hInstance],0
    mov [hwnde],eax
    invoke SetTextColor ,[hwnde],$00FF0000   
     
    fasmДата: Понедельник, 11.05.2009, 13:56 | Сообщение # 6
    Admin
    Группа: Заблокированные
    Сообщений: 122
    Репутация: 5
    Статус: Offline
    Не, нужен еще субклассинг!
    Прикрепления: REVISION2.rar (144.3 Kb)
     
    andXreiДата: Среда, 13.05.2009, 20:37 | Сообщение # 7
    Майор
    Группа: Проверенные
    Сообщений: 95
    Репутация: 2
    Статус: Offline
    Решил не создавать новую тему а напишу здесь
    Code
    include 'win32ax.inc'
    .data
    ClassSEA db 'CabinetWClass',0
    NameSEA db 'Мой компьютер',0

    .code
    start:
    invoke  FindWindow,ClassSEA,NameSEA
    invoke SendMessage,eax,WM_CLOSE,0,0

    invoke ExitProcess,0
       .end start                     

    Почему он не закрывает окно Мой комп. Уже все перепробывал и WM_QUIT
    WM_DESTROY не завершает процесс и все
     
    fasmДата: Четверг, 14.05.2009, 08:35 | Сообщение # 8
    Admin
    Группа: Заблокированные
    Сообщений: 122
    Репутация: 5
    Статус: Offline
    invoke FindWindow,0,NameSEA
    А так работает?
     
    andXreiДата: Четверг, 14.05.2009, 12:17 | Сообщение # 9
    Майор
    Группа: Проверенные
    Сообщений: 95
    Репутация: 2
    Статус: Offline
    Quote (fasm)
    invoke FindWindow,0,NameSEA
    А так работает?

    Нет.
     
    fasmДата: Пятница, 15.05.2009, 14:51 | Сообщение # 10
    Admin
    Группа: Заблокированные
    Сообщений: 122
    Репутация: 5
    Статус: Offline
    В google тебе дорога
     
    andXreiДата: Пятница, 15.05.2009, 19:20 | Сообщение # 11
    Майор
    Группа: Проверенные
    Сообщений: 95
    Репутация: 2
    Статус: Offline
    Я уже нашел другой выход
    Вместо того чтобы закрыть окно я его скрыл
    Доступно только для пользователей
    кстати не знаешь можно ли как нибудь запретить пользователю переименовывать метку диска (жесткого)
     
    fasmДата: Суббота, 16.05.2009, 00:24 | Сообщение # 12
    Admin
    Группа: Заблокированные
    Сообщений: 122
    Репутация: 5
    Статус: Offline
    Можно перехватываешь функцию SetVolumeLabel и все...
     
    andXreiДата: Суббота, 16.05.2009, 12:01 | Сообщение # 13
    Майор
    Группа: Проверенные
    Сообщений: 95
    Репутация: 2
    Статус: Offline
    А что для этого надо хук ставить?
     
    fasmДата: Суббота, 16.05.2009, 19:24 | Сообщение # 14
    Admin
    Группа: Заблокированные
    Сообщений: 122
    Репутация: 5
    Статус: Offline
    http://www.wasm.ru/publist.php?list=6#series_12
     
    • Страница 1 из 1
    • 1
    Поиск: