реализовать таймаут кода и что-то типа автоклика на асме

Тема в разделе "WASM.BEGINNERS", создана пользователем vnb, 24 мар 2009.

  1. vnb

    vnb New Member

    Публикаций:
    0
    Регистрация:
    6 авг 2008
    Сообщения:
    22
    Подскажите,как можно в ассемблере (может и с помощью АПИ) остановить поток выполнения кода на определенное время? Чтобы получилось типа:
    код
    таймаут на 20 секунд
    дальше выполняем код

    И второй вопрос: можно ли как-нибудь реализовать запуск файл.exe только если провести по его значку курсором мыши? Реализация только в самом коде файл.exe.

    Прошу не ругаться,у меня очень скромный опыт программирования. То хотя-бы направьте мысль в нужную сторону. Заранее благодарен
     
  2. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.914
    Код (Text):
    1. код
    2. Sleep(20000);таймаут на 20 секунд(не много ли?)
    3. дальше выполняем код
     
  3. vnb

    vnb New Member

    Публикаций:
    0
    Регистрация:
    6 авг 2008
    Сообщения:
    22
    а как правильно заюзать Sleep(20000) в ассемблерном коде? А то в справочниках я не нашел инструкций...
     
  4. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    vnb
    Чтобы использовать Sleep правильно, усыпляемый поток не должен иметь окон с очередью. Консольная программа, или программа без GUI, или созданный отдельно поток. Делать приостановку таким образом в программе с гуем - страшный грех :))) Собственно "заюзать" очень просто: первый пример в этой статье как раз использует Sleep, чтобы можно было успеть увидеть выведенный в консольное окно текст.

    по второму вопросу - это невозможно. Если бы существовала какая-то критическая уязвимость, связанная с переполнением буфера при обработке иконки, или еще каких-либо отображаемых или проверяемых эксплорером свойств экзешника, то может быть и можно было бы... но пока таковой не обнаружено.
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    FatMoon
    Была трабла у меня, в системном каталоге *.ocx компонент, так при листании проводник выпадал с ошибкой. Как оказалось когда листаем загружался он, я вычистил это, к сожалению не помню где именно, но гдето в реестре глубоко этот модуль был зареган.
     
  6. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.914
    Сам же упоминаешь об API-функциях, а потом почемуто пишешь об инструкции...
    Наверное так invoke Sleep, 20000 а можно и так:
    Код (Text):
    1. include \masm32\include\kernel32.inc
    2. includelib \masm32\lib\kernel32.lib; Sleep находится в kernel32.dll
    3.  .code
    4. ...
    5. выполняем какой-то код
    6. push 20000; задержка в милисекундах
    7. call Sleep
    8. выполняем код дальше
    FatMoon
    IMHO для 20 секунд несущественно
     
  7. vnb

    vnb New Member

    Публикаций:
    0
    Регистрация:
    6 авг 2008
    Сообщения:
    22
    Всем большое спасибо что откликнулись! :) Все работает,я просто неправильно вызвал в первый раз: invoke Sleep(20000). Недостаточно опыта еще... И по второму вопросу все понял. Спасибо.