`
xieyunbiao
  • 浏览: 37002 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

在OUTLOOK里实现记时器

阅读更多

    前些日子工作的需要,要在outlook里写VBA实现定时检查邮件然后报警这样的功能。搞了好段时间才搞定,其中遇到的一个问题就是outlook里不支持VBA中ontime等函数的使用,用等待等函数又使得outlook一直被VBA宏占用,不能正常收发邮件了。

    最后我还是通过借助Windows API 函数SetTimer和KillTimer实现了我要完成的功能。

    代码如下:

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 INTERVAL = 300000
Public lTimerID As Long

Sub StartTimer(lDuration As Long)
    On Error GoTo SubEnd
    If lTimerID = 0 Then
        lTimerID = SetTimer(0&, 0&, lDuration, AddressOf Alert) 'Alert就是我要定时执行的函数的名,可以用你需要定时执行的函数替换
    Else
        Call StopTimer
        lTimerID = SetTimer(0&, 0&, lDuration, AddressOf Alert)
    End If
SubEnd:
End Sub

Sub StopTimer()
    KillTimer 0&, lTimerID
End Sub

Private Sub Application_Quit()
    Call StopTimer
End Sub

Private Sub Application_Startup() '当outlook打开时(首先宏安全性要允许执行宏)触发此事件
    Call StartTimer(INTERVAL) 'INTERVAL的单位是毫秒,我设置的是每隔5分钟。此函数的功能是相隔INTERVAL毫秒函数自动再次被调用
End Sub

Windows API 函数SetTimer和KillTimer说明如下:

SetTimer:创建或设置一个定时器。

    函数的原型

 

  UINT_PTR SetTimer(

 

  HWND hWnd, //窗口句柄

 

  UINT_PTR nIDEvent, // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器

 

  UINT nElapse, // 时间间隔,单位为毫秒

 

  TIMERPROC lpTimerFunc //回调函数

 

  );

KillTimer:移除定时器函数的声明:移除先前用SetTimer设置的定时器。在定时器使用完毕后移除定时器时使用。

 

  函数原型:

 

  BOOL KillTimer(

 

  HWND hwnd; //与定时器相关联的窗口句柄

 

  UINT nIDEvent //定时器标识符

 

  ):

 

  参数:

 

  hwnd:与定时器相关联的窗口句柄

 

  nIDEvent: 传递给SetTimer的定时器ID值。

 

  说明:

 

  销毁以前调用SetTimer创建的用nIDEvent标识的定时器事件。不能将此定时器有关的未处理的WM_TIMER消息都从消息队列中清除。

 

  返回值

 

  BOOL 如果函数成功,返回一个非0值,

 

  如果失败,返回值为0

 

  注意: 该函数并不移除WM_TIMER 先前发送到消息列队中的消息

 

由于outlook的VBA是写的ThisOutlookSession里,所以没保存成附件发给大家,见谅了。

 

分享到:
评论

相关推荐

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    实例123 使用迭代器实现文字的动态效果 151 实例124 使用分部类实现多种计算方法 153 实例125 使用分部类记录学生信息 155 5.5 泛型的使用 156 实例126 使用泛型存储不同类型的数据列表 156 实例127 通过泛型查找...

    C#程序开发范例宝典(第2版).part13

    实例111 使用Timer组件制作计时器 161 实例112 使用Timer组件显示当前系统时间 165 实例113 使用Timer组件制作左右飘动的窗体 166 实例114 使用Timer组件实现奥运倒计时 167 3.8 ServiceController组件 169 ...

    C#程序开发范例宝典(第2版).part08

    实例111 使用Timer组件制作计时器 161 实例112 使用Timer组件显示当前系统时间 165 实例113 使用Timer组件制作左右飘动的窗体 166 实例114 使用Timer组件实现奥运倒计时 167 3.8 ServiceController组件 169 ...

    C#程序开发范例宝典(第2版).part02

    实例111 使用Timer组件制作计时器 161 实例112 使用Timer组件显示当前系统时间 165 实例113 使用Timer组件制作左右飘动的窗体 166 实例114 使用Timer组件实现奥运倒计时 167 3.8 ServiceController组件 169 ...

    C#程序开发范例宝典(第2版).part12

    实例111 使用Timer组件制作计时器 161 实例112 使用Timer组件显示当前系统时间 165 实例113 使用Timer组件制作左右飘动的窗体 166 实例114 使用Timer组件实现奥运倒计时 167 3.8 ServiceController组件 169 ...

    C#编程经验技巧宝典

    112 <br>0188 如何在ASP.NET中显示当前IE浏览器头信息 113 <br>5.6 其他应用技巧 114 <br>0189 如何判断年份是否为闰年 114 <br>0190 如何根据年份判断十二生肖 114 <br>0191 如何根据IP...

    C#.net_经典编程例子400个

    142 3.6 Process组件 143 实例102 使用Process组件访问本地进程 143 3.7 Timer组件 145 实例103 使用Timer组件制作计时器 145 实例104 使用Timer组件显示当前系统时间 150 实例105 ...

Global site tag (gtag.js) - Google Analytics