`
xieyunbiao
  • 浏览: 38463 次
  • 性别: 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里,所以没保存成附件发给大家,见谅了。

 

分享到:
评论

相关推荐

    VBA计时器示例

    4. **后台处理**:执行一些耗时的操作时,可以设置计时器在后台执行,不影响用户对其他Office应用程序的使用。 5. **定时发送邮件**:通过Outlook的VBA接口,可以实现定时发送邮件的功能。 ### 注意事项 - 使用...

    实现OutLook滚动工具栏效果.rar_delphi outlook

    为了达到类似Outlook的平滑滚动,你需要自定义TScrollBox的OnScroll事件,通过计时器控制滚动速度,使滚动更加平滑自然。 4. **动态加载和隐藏Tab页**: - 如果选项卡数量过多,可以考虑只在需要时动态加载和显示...

    C#中轻松制作仿OutLook的界面

    文中提到的项目命名为"MyOutLookFace",在项目中引入的主要控件包括Panel、ImageList、ListView和计时器。其中: - **Panel**:作为功能区容器,设置其Dock属性为Left或Right,BorderStyle属性为Fixed3D,以模拟...

    silverlight dataGrid 模拟双击一行事件

    3. **实现计时器**:在事件处理程序中,启动一个计时器。如果在设定的时间内(例如250毫秒)再次触发单击事件,那么我们就认为这是双击。 ```csharp private DispatcherTimer timer = new DispatcherTimer(); timer...

    meetingcost:用于测量会议费用的花式裤子计时器工具

    "MeetingCost: 会议费用计算工具是一款创新的计时器应用,专为衡量会议经济效益而设计。这款工具采用直观的用户界面和先进的算法,帮助用户实时了解会议的时间消耗与潜在的金钱成本。通过精确追踪会议时间, ...

    苹果手机使用手册.pdf

    6. 定时关闭音乐:利用内置的计时器,选择“计时器结束时”的“iPod睡眠模式”,可以设置音乐定时停止,防止夜间持续播放。 7. 通讯录管理:将原有的联系人导入iPhone可能是个挑战,但可以通过同步服务如iCloud、...

    life balance

    应用提供了专注计时器,帮助用户保持集中注意力。 此外,"Life Balance"还具备以下特点: - 同步功能:支持跨设备同步,无论在电脑、手机还是平板上,都能随时查看和管理任务。 - 分享与协作:用户可以将任务分享...

    网站改版上线邮件订阅html模板

    这可以通过JavaScript实现,并与Bootstrap的计时器组件结合使用。 5. **表单设计**:邮件订阅通常涉及用户输入邮箱地址。Bootstrap的表单组件提供预设的样式,使表单字段和提交按钮看起来专业且一致。 6. **兼容性...

    自动化测试讲稿Step俞戴龙PPT课件.pptx

    在上述脚本中,`WshShell.SendKeys`方法用于模拟键盘输入,而`Popup`方法用于显示带有计时器的弹出对话框。 总的来说,VBScript是自动化测试中的一个重要工具,尤其适合Windows环境下的脚本编写。掌握VBScript的...

    定时发送邮件软件

    这可以通过易语言中的计时器组件或者操作系统级别的计划任务API来实现,设置特定时间触发邮件发送操作。 5. **错误处理**:为了提高软件的健壮性,需要处理可能出现的各种异常情况,如网络中断、服务器拒绝连接等,...

    桌面日历软件

    6. **时间管理工具**:一些高级的桌面日历软件可能包含时间管理工具,如番茄工作法计时器,帮助用户提高专注力,合理分配工作和休息时间。 7. **多语言支持**:为了满足全球用户的需求,软件通常会提供多种语言选项...

    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 ...

Global site tag (gtag.js) - Google Analytics