有时程序中要用msgbox弹出对话框,如果没有点击确定,就会卡在那里。
我想msgbox一个对话框,如果用户在一段时间内没有点击。就自动关闭这个提示框?
除了findwindow,sendmessage之外,还有没有别的方法?
我想msgbox一个对话框,如果用户在一段时间内没有点击。就自动关闭这个提示框?
除了findwindow,sendmessage之外,还有没有别的方法?
解决方案 »
- 如何用SendMessage得到ListView的行数,并取得某一行的内容?
- CoderHelper公布最后版本,以及全部源代码,同时公布VS2005下的模版CoderHelper以及代码段编辑器代码。
- 屏幕键盘问题!
- ActiveReport多个子报表显示的问题
- 急救:combox显示不出string
- 新手求教打印问题,望大虾们指点!谢谢了!
- 高手问题!shell及api的捕捉用法,
- 请问组件(COM)和控件有什么不同谢谢!
- 请问怎样实现下面的例子?
- 怎么这里都是讨论 datebase 和 VBA 的?
- 使用Winsocket控件做Http代理服务器的问题
- vb InStr ????????????
DateDiff("s", time1, Now()) >= 30
MessageBoxIndirect()
传递一个结构体,包含一个窗口的函数,然后在WM_INIT里面设置定时器,并且控制关闭。但是对于初学者,建议自己做一个窗口算了。
编译以下程序后,测试:Private Sub Command1_Click()
Timer1.Enabled = True
MsgBox "xxx"
Timer1.Enabled = False
End SubPrivate Sub Form_Load()
Timer1.Interval = 2000
End SubPrivate Sub Timer1_Timer()
Timer1.Enabled = False
SendKeys "{ENTER}"
End Sub
'3秒后自动关闭msgbox 3000 3秒可自行设置
Private Declare Function MessageBoxTimeout Lib "user32" Alias "MessageBoxTimeoutA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long, ByVal wlange As Long, ByVal dwTimeout As Long) As LongPrivate Sub Command1_Click()
MessageBoxTimeout Me.hwnd, "Hello World", "Tips", vbInformation, 0, 3000
End Sub
(ByVal lpClassName As String, ByVal lpWindowName As String) As LongPrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As LongPrivate Const WM_CLOSE = &H10
Private Const MsgTitle As String = "Test Message"Private Sub Command1_Click()
Dim nRet As Long
Timer1.Interval = 3000
Timer1.Enabled = True
nRet = MsgBox("若您不回应的话,3 秒后此 MsgBox 会自动关闭", 64, MsgTitle)
Timer1.Enabled = False
End SubPrivate Sub Timer1_Timer()
Dim hWnd As Long
hWnd = FindWindow(vbNullString, MsgTitle)
Call SendMessage(hWnd, WM_CLOSE, 0, ByVal 0&)
End Sub注意:此方法的限制说明:1、当常数设定为 VbAbortRetryIgnore 或 VbYesNo 时,无效!
2、在 Design Time 时,无效,必须 Make EXE 之后才有效!
Private Sub Command1_Click()
MessageBoxTimeout Me.hwnd, "Hello World", "Tips", vbExclamation, 0, 3000
End Sub
6楼的好,我想知道你是怎么知道这函数的
6楼的简洁实用,wType参数完全和默认的Msgbox参数一样,好用!
所有消息对话框的API最终都会调用SoftModalMessageBox进行操作,当年那个俄罗斯VB论坛写的代码打不开了,晕。
Set WsShell = CreateObject("Wscript.Shell ")
WsShell.Popup "你还在上网吗?", 1, "温馨提示 "