VBOffice

API-Timer

Mit einem Timer können Funktionen in regelmäßigen Intervallen automatisch aufgerufen werden.

Zuletzt geändert: 18.01.2006 | Aufrufe: 38.888  | #4
◀ Vorheriges Beispiel Nächstes Beispiel ▶

Inhalt

SAM SAM
Legen Sie fest, mit welcher "Identität" Ihre Emails beim Empfänger erscheinen sollen. Mit SAM bestimmen Sie Absender, Signatur und Speicherort für Emails anhand von Regeln.

Das Timer-Modul

Wenn Sie eine Funktion in regelmäßigen Intervallen immer wieder starten müssen, dann bietet sich ein Timer an, der in festgelegten Intervallen ausgelöst wird. Eine weitere Anwendungsmöglichkeit ist es, Prozesse zu entkoppeln. Ein typisches Szenario ist, dass Sie beim Start Outlooks einen Ordner per VBA aufräumen müssen. Das Application_Startup-Ereignis liefert das Startsignal, aber solange dann Ihr Makro für die Ausführung benötigt, wird Outlook am weiteren Start gehindert, was zu Problemen führen kann. Wenn Sie stattdessen in dem Ereignis nur den Timer starten, dann kann Outlook mit seinen eigenen Aufgaben sofort fortfahren und Ihr Makro wird erst später aufgerufen.

Klicken Sie auf Einfügen/Modul und fügen Sie diesen ersten Teil des Codes in das neue Modul ein.


tip  So fügen Sie Makros in Outlook ein
Private Declare Function SetTimer Lib "user32.dll" (ByVal hwnd As Long, _
  ByVal nIDEvent As Long, ByVal uElapse As Long, _
  ByVal lpTimerFunc As Long) As Long

Private Declare Function KillTimer Lib "user32.dll" (ByVal hwnd As Long, _
  ByVal nIDEvent As Long) As Long

Const WM_TIMER = &H113

Private hEvent As Long
Private m_Callback As Object

Public Sub TimerProc(ByVal hwnd As Long, ByVal uMsg As Long, _
  ByVal wParam As Long, ByVal lParam As Long _
)
  If uMsg = WM_TIMER Then
    m_Callback.TimerEvent
  End If
End Sub

Public Function EnableTimer(ByVal Interval As Long, Callback As Object) As Boolean
  If hEvent <> 0 Then
    Exit Function
  End If
  hEvent = SetTimer(0&, 0&, Interval, AddressOf TimerProc)
  Set m_Callback = Callback
  EnableTimer = CBool(hEvent)
End Function

Public Function DisableTimer()
  If hEvent = 0 Then
    Exit Function
  End If
  KillTimer 0&, hEvent
  hEvent = 0
End Function
OLKeeper OLKeeper
Der OLKeeper verhindert zuverlässig, dass Sie Microsoft Outlook unbeabsichtigt schließen und so etwa wichtige Emails verpassen würden.

Aufrufbeispiel

Die folgenden drei Funktionen sind ein Beispiel, wie der Timer gleich nach dem Start Outlooks gestartet werden kann. Das Intervall ist auf 60.000 ms festgelegt, d.h. die Funktion TimerEvent wird nach 60 Sekunden aufgerufen. In der TimerEvent-Funktion können Sie den Timer sofort wieder abschalten, wenn Sie nur das eine Signal brauchen. Oder Sie lassen den Timer weiterlaufen, wenn Sie regelmäßig alle 60 Sekunden eine Funktion ausführen wollen.

In jedem Fall müssen Sie den Timer spätestens vor Beenden Outlooks abschalten, sonst führt das zu einem Absturz. Es reicht, DisableTimer, wie gezeigt, aus Application_Quit heraus aufzurufen.

Private Sub Application_Startup()
  EnableTimer 60000, Me
End Sub

Public Sub TimerEvent()
  'Abschalten, wenn keine weiteren Signale gebraucht werden
  DisableTimer
End Sub

Private Sub Application_Quit()
  DisableTimer
End Sub
SAM SAM
Legen Sie fest, mit welcher "Identität" Ihre Emails beim Empfänger erscheinen sollen. Mit SAM bestimmen Sie Absender, Signatur und Speicherort für Emails anhand von Regeln.
email  Senden Sie eine Nachricht