定时关闭MsgBox-未公开的API-张亚帮
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-模块/函数/VBA


定时关闭MsgBox-未公开的API

发表时间:2012/4/3 20:39:58 评论(3) 浏览(9844)  评论 | 加入收藏 | 复制
   
摘 要:定时关闭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群(群号:198465573)
 
 相关文章
【access小品】屁股与椅子--定时关闭窗体及退出access系...  【todaynew  2010/12/22】
【Access入门】Access定位消息盒MsgBox默认坐标位置...  【麥田  2012/7/6】
1秒后自动关闭msgbox消息框示例  【风行  2012/12/22】
有选择的自动关闭msgbox  【jia  2013/1/24】
MsgBox 函数  【小英  2013/1/31】
常见问答
技术分类
相关资源
文章搜索
关于作者

张亚帮

文章分类

文章存档

友情链接