Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-模块/函数/VBA

定时关闭MsgBox-未公开的API

时 间:2012-04-03 20:39:58
作 者:收藏文章   ID:60  城市:南京
摘 要:定时关闭MsgBox-未公开的API
正 文:

       大家都知道,VBA中自带的MsgBox不能自动关闭,某些特殊情况下需要在指定时间内用户没有点击消息框按钮后能继续运行代码,需要用到定时关闭的消息框,之前的方法是使用Wscript.Shell的Popup方法,或者自定义窗体。
EH的ldy兄推荐了一个未公开的API可以实现定时关闭消息框,感觉十分有用。稍作修改,将wType参数改成可以提示输入VBA的vbMsgboxStyle常数。
这个API函数的参数如下:

  • hwnd:窗口句柄,可以设为0
  • lpText:消息框显示内容,类似于MsgBox函数的第一个参数Prompt
  • lpCaption:消息框标题,类似于MsgBox函数的第三个参数Caption
  • wType:消息框类型,类似于MsgBox函数的第二个参数Buttons
  • wlange:不是太明白这个参数,0或者1都看不出什么差别
  • dwTimeout:延时时间,单位是毫秒

返回的值和vbMsgBoxResult常数一样,多了一个返回值32000表示超过延时时间未选择任何按钮。

Private Declare Function MsgBoxEx Lib "user32" Alias "MessageBoxTimeoutA" ( _
ByVal hwnd As Long, _
ByVal lpText As String, _
ByVal lpCaption As String, _
ByVal wType As VbMsgBoxStyle, _
ByVal wlange As Long, _
ByVal dwTimeout As Long) As Long
Private Sub TestMsgboxEx()
Dim ret As Long
ret
= MsgBoxEx(0, "请选择", "两秒后自动关闭", vbYesNo + vbInformation, 1, 2000)
If ret = 32000 Then
Debug.Print
"超时关闭"
ElseIf ret = vbYes Then
Debug.Print
"选择Yes"
ElseIf ret = vbNo Then
Debug.Print
"选择No"
End If
End Sub



Access软件网QQ交流群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助