2011-04-05 3 views
0

Я создаю таймер обратного отсчета в powerpoint и использую API-интерфейс kernel32 sleep (в ppt). Когда вы покидаете режим слайд-шоу (но сохраняете работу макроса) после того, как таймер работает в течение значительного времени, мой рабочий стол Windows полностью отключается и становится полностью непригодным (экран выглядит странно-серым цветом). Рабочий стол неожиданно возвращается и снова начинает работать, однако открытие IE заставляет экран снова получить все завихрение.VB: Sleep API Issue

Любая идея, что может вызвать эту проблему? Код таймера ниже

  Do While (TMinus > -1) 
      'Suspend program execution for 1 second (1000 milliseconds) 
      Sleep 1000 

      'set hours, muinutes and seconds left based on number of seconds left (TMinus) 
      cHour = Int(TMinus/3600) 
      cMin = Int((TMinus Mod 3600)/60) 
      cSec = Int((TMinus Mod 3600) Mod 60) 

      'Change text in Shape 1 (timer) to reflect changed time 

      .TextFrame.TextRange.Text = Format(TimeSerial(cHour, cMin, cSec), "hh:mm:ss") 

      'decrement the countdown 
      TMinus = TMinus - 1 
      'Refreshes the display 
      DoEvents 
     Loop 
+0

'DoEvents' не должно быть необходимым при использовании' Sleep', так как 'Sleep' дает управление другим процессам, пока ваш макрос спит. –

ответ

0

Использование DoEvents может вызвать некоторые довольно странные проблемы. Попробуйте использовать таймер вместо Sleep/DoEvents.