Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пауза, как организовать 
:(
    Опции темы
I_Am_Rock
Дата 6.7.2010, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: нет
Всего: 15



Добрый день.

Как сделать паузу? Sleep не подходит, так как грузит систему.
Читал, что можно с помощью SetTimer, но никак не могу найти пример чтобы не через wm_timer, а через callback - потому что wm_timer посылается окну, а у меня в приложении нет окна.

И еще - мне нужно именно на fasm  smile  Я другой синтаксис не пойму)

 smile 

Пожалуйста, напишите примерчик, чтоб после запуска программы выходил MessageBox, но не сразу, а через 5 секунд и чтобы это было реализовано SetTimer

PM MAIL WWW   Вверх
spin2
Дата 6.7.2010, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 15.12.2005
Где: Москва-Одесса

Репутация: нет
Всего: 31



Loop пустой, например.


--------------------
"С кем тяжело молчать, с тем не о чем говорить" (Метерлинк)
блог
Все об ICQ-ботах
PM MAIL WWW ICQ Skype Jabber   Вверх
I_Am_Rock
Дата 6.7.2010, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: нет
Всего: 15



Извините, не понял?
PM MAIL WWW   Вверх
I_Am_Rock
Дата 6.7.2010, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: нет
Всего: 15



Если Вы имеете ввиду создание пустого цикла, который выполняется пока текущее время <= время начала цикла + 3000 мс, то я так пробовал - пауза получается, но система подвисает на это время 
PM MAIL WWW   Вверх
JAPH
Дата 6.7.2010, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 8.1.2007
Где: Ленобласть

Репутация: 5
Всего: 23



Sleep грузит систему? Хм... Вродь не должна

У SetTimer параметр HWND необязательный, и есть 4ый параметр lpTimerFunc ;)


--------------------
Что непонятно - спрашиваем smile
PM MAIL ICQ   Вверх
I_Am_Rock
Дата 7.7.2010, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: нет
Всего: 15



Цитата(JAPH @  6.7.2010,  21:14 Найти цитируемый пост)
Sleep грузит систему? Хм... Вродь не должна

100% загружает систему ((( Правда потом продолжает работу норм. Собственно, как и цикл, который повторяется пока не пройдет время. 


Цитата(JAPH @  6.7.2010,  21:14 Найти цитируемый пост)
У SetTimer параметр HWND необязательный, и есть 4ый параметр lpTimerFunc ;) 

Я знаю. Вот как я пытаюсь делать (FASM)

Код

proc MyTimeFunc hWnd,uMsg,idEvent,dwTime
   ;код, который работает по истечению времени
        dec [ccounter]
        jnz NoKill
        invoke KillTimer,NULL,[TimerID]
        invoke PostQuitMessage
NoKill:
        ret
endp 

;кусок в главной функции
;-------
invoke SetTimer,NULL,0,[hTime],MyTimeFunc
mov [TimerID],eax
repeatt:
invoke GetMessage,lpMsg,NULL,0,0
cmp eax,WM_QUIT
je exitt
invoke TranslateMessage,lpMsg
invoke DispatchMessage,lpMsg
jmp repeatt
exitt:
;-------


Это сообщение отредактировал(а) I_Am_Rock - 7.7.2010, 11:02
PM MAIL WWW   Вверх
JAPH
Дата 17.7.2010, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 8.1.2007
Где: Ленобласть

Репутация: 5
Всего: 23



Ну с таймером вроде все в порядке. А вот с GetMessage...
Цитата
If the function retrieves a message other than WM_QUIT, the return value is nonzero.

If the function retrieves the WM_QUIT message, the return value is zero. 

If there is an error, the return value is -1.


Код

    lea    ebx, [lpMsg]
    invoke    GetMessage, ebx, 0, 0, 0
    cmp    eax, 0
    jle    exitt



--------------------
Что непонятно - спрашиваем smile
PM MAIL ICQ   Вверх
izl3sa
Дата 19.7.2010, 07:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 25.6.2010

Репутация: нет
Всего: нет



2I_Am_Rock
>> 100% загружает систему 
помоему вы не понимаете как работает система =\ 

Sleep -> NtDelayExecution -> KeDelayExecutionThread
Поток после перехода в ядро добавляется в очередь ожидания  и переходит в состояние ожидания. С этого момента поток не выполняется пока не выйдет интервал, если только он не alertable. Смотрите сурсы wrk\ntos\ke\wait.c
Sleep технически не может грузить систему. Проблема в ваших сорцах.
PM MAIL   Вверх
I_Am_Rock
Дата 21.7.2010, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: нет
Всего: 15



JAPH
izl3sa

Спасибо, попробую
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0917 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.