Проблема при вызове функций из COMDLG32.DLL

Тема в разделе "WASM.ASSEMBLER", создана пользователем KiNDeR, 29 сен 2004.

  1. KiNDeR

    KiNDeR New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2003
    Сообщения:
    258
    Адрес:
    Russia
    В своей проге, пытаюсь вызвать функцию GetSaveFileName, и программа падает, а вот если ее запустить под отладчиком то все работает как надо. Вчем проблема не пойму!

    Прога вылетает еще до создания окна, если закоментировать вызов этой функции, то окно отобразиться.

    [​IMG] 1269719142__gemoroy.zip
     
  2. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Проблема немного не там :)

    Вместо "@call [CreateWindowEx],ebx,eax,c_w_name,..." попробуй "@call [CreateWindowEx],ebx,c_w_name,c_w_name,..."
     
  3. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Я тоже не доганяю почему работает под отладчиком (олли) , вроде все ignore у меня отключены ...
     
  4. KiNDeR

    KiNDeR New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2003
    Сообщения:
    258
    Адрес:
    Russia
    bogrus - Ты гений!

    Спасибо тебе огромное!
     
  5. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    KiNDeR

    Ну хтож такие названия для аттачей выбирает %)
     
  6. masquer

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев
    после вызова RegisterClass хорошим тоном считается старшее слово очищать, олли это автоматом делает (правда какого хрена - непонятно), а в XP в старшем слове будет какой-то мусор, которого там нед олжно быть.
     
  7. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Сомневаюсь , что олли такое себе позволяет . И KiNDeR прав , если не юзать COMDLG32.DLL , то ошибка не выскакивает и старшее слово очищено (а в нём ли дело ?) . Нифига не могу поймать где же баг , может при инициализации COMDLG32.DLL ...

    [​IMG] _1726110773__window.asm
     
  8. masquer

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев


    может в данном случае что-то другое, но то что олли так себя ведет с атомами - это факт
     
  9. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine




    Скорее всего , потому что так ведёт себя любой отладчик , я перепробывал их три :)
     
  10. n0p

    n0p 10010000b

    Публикаций:
    0
    Регистрация:
    7 май 2003
    Сообщения:
    256
    Адрес:
    Новосиbeerск
    KiNDeR

    Мы же вроде выяснили, что это из-за RegisterClass и надо юзать RegisterClassEx? Или это была догадка, которая так и не подтвердилась?
     
  11. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    bogrus

    > Скорее всего , потому что так ведёт себя любой отладчик , я перепробывал их три :)



    юзермодные может быть, но ты наверняка не пробовал SoftIce :derisive:
     
  12. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Нашёл бяку , и не будет ли угодно господам испробывать ещё один IsDebuggerPresent под сайсом (желательно и на 9x) , т.к. тестил только юзермодные на NT4.0 и w2k .

    [​IMG] _1847824837__isdebug.exe
     
  13. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    Угодно потестить - нихма он сайс не детектит. Чего еще ждать-то?
     
  14. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Да, я как-то не догнал, сайс жеж не запускает проги с DEBUG_PROCESS