Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пауза в макросе 
:(
    Опции темы
Гость_Иван
Дата 21.9.2004, 10:57 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Зрасть .
Может кто поможет, в Факе не нашёл.
В макросе для Эксел я ипользую такую паузу.
p = 2
s = Timer
Do While Timer < s + p
DoEvents
Loop
В течении паузы диспетчер задач показывает 100 процентную загрузку проца.
Ну для настольного компа без разницы. А вот когда я запускаю этот макрос на ноутбуке.Ноут начинает греться, начинет вентилятор жужжать, соответственно повышенный расход энергии и небольшое время автономной работы ноутбука.
Есть какой нибудь другой способ задать паузу?

  Вверх
-Mikle-
Дата 21.9.2004, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

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



Можно так:

Код
'объявление API функции
Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)

'в коде используй
Sleep 2000 'пауза 2 секунды

в этом случае проц не грузится, но перестают приходить события на форму и Excel

можно попробовать так:
Код
sub Pause(mSec as long)
 for i=1 to mSec
   sleep 1
   doEvents
 next
end sub

вот так все будет нормально и с процессором и с событиями, правда она будет немного даинее указанного значения, из-за doEvents

А вот если использовать ЕЁ в твоем варианте, то по идее, все должно быть окей
Код
sub Pause(Sec as long)
 s = clng(Timer)+Sec
 while clng(Timer) < s
   doevents
   sleep 10
 wend
end sub



--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
Akina
Дата 21.9.2004, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата
DoEvents is most useful for simple things like allowing a user to cancel a process after it has started, for example a search for a file. For long-running processes, yielding the processor is better accomplished by using a Timer or delegating the task to an ActiveX EXE component.. In the latter case, the task can continue completely independent of your application, and the operating system takes case of multitasking and time slicing.

Добавлено @ 12:57
Посему вместо паузы надо просто завершить исполнение процедуры, предварительно взведя флаг вызова ее окончания (помещенного в отдельную процедуру), который обрабатывается таймером формы или еще где.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Гость_Иван
Дата 26.9.2004, 07:49 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Я решил использовать такой код
Dim a As Long

Do

a = Second(Now)

If a = 1 Then Call Макрос2

Sleep 1000

DoEvents

Loop

Процессор не грузиться и вроде система нормально работает.
Никто не знает функция Sleep не вредна для ноутбука, может при её использовании какие нибудь переходные процессы возникают или что нибудь ещё вредное??

  Вверх
-Mikle-
Дата 26.9.2004, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

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



Цитата
Никто не знает функция Sleep не вредна для ноутбука, может при её использовании какие нибудь переходные процессы возникают или что нибудь ещё вредное??

Да вряд ли, это стандартная ф-ия из Kernel32, мелкософты умно ее сделали, там нет никаких циклов по ожиданию прохода времени...
Ты должен беспокоиться только о ресурсоемкости твоей проги(в данном случае), я не слышал такого, что программы пишуться отдельно под ноут и настольный, если зарузка ЦП не превышает 0-2 процентов при выполнении проги, значит все нормально. Вообще загрузка ЦП, это не совсем то, как кажется на первый взгляд... но это уже отдельная тема, не в этом топике...

PS: Зарегистрируйся, это бесплатно!!! smile.gif


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


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

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


 




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


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

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