MsgBox若干秒后自动关闭的方法
2008-10-02 19:35
561 查看
主題:如何設定 MsgBox 在若干時間之後若無回應則自動關閉?
來源:Ask the Visual Basic Pro
版本:VB6 / VB5 / VB4-32
--------------------------------------------------------------------------------
在我們的印象中,VB 所提供的 MsgBox 是一個強制回應的視窗,您一定要按了其中的某一個 CommandButton 之後,它才會關閉!但是在某些軟体中,我們會看到,明明是使用系統的 MsgBox,可是您如果不理它,幾秒鐘之後,它就自行關閉了!別人是如何做到的呢?這個問題偶而會出現在討論區中,有的人會回答:
只要自己做一個類似 MsgBox 的視窗,就可以自己用 Timer 來控制這個視窗何時要關閉了!
但是,其實不用這麼麻煩的,只要使用系統的 MsgBox 再加一個 Timer 就可以控制了!
我們都知道 MsgBox 可以設定成很多不同的樣子,可以有很多不同的圖示,不同的按鈕,其中控制按鈕的部份,可以設定的常數如下:
常數 值 說明
vbOKOnly 0 只顯示 OK 按鈕。
VbOKCancel 1 顯示 OK 及 Cancel 按鈕。
VbAbortRetryIgnore 2 顯示 Abort、 Retry 及 Ignore 按鈕。
VbYesNoCancel 3 顯示 Yes、No 及 Cancel 按鈕。
VbYesNo 4 顯示 Yes 及 No 按鈕。
VbRetryCancel 5 顯示 Retry 及 Cancel 按鈕。
為什麼要特別提到 MsgBox 的常數呢?因為下面我們要告訴您的方法,還是有一點點限制的!當您設定的常數是 VbAbortRetryIgnore 或 VbYesNo 時,下面的方法也是沒用的!
'在表單的宣告區中加入以下的宣告
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long
Private Const WM_CLOSE = &H10
Private Const MsgTitle As String = "Test Message"
'在表單中加入一個 CommandButton 及一個 Timer 控制項,加入以下程式碼:
Private Sub Command1_Click()
Dim nRet As Long
Timer1.Interval = 3000
Timer1.Enabled = True
nRet = MsgBox("若您不回應的話,3 秒後此 MsgBox 會自動關閉", 64, MsgTitle)
Timer1.Enabled = False
End Sub
Private Sub Timer1_Timer()
Dim hWnd As Long
hWnd = FindWindow(vbNullString, MsgTitle)
Call SendMessage(hWnd, WM_CLOSE, 0, ByVal 0&)
End Sub
好了,很簡單吧!您執行程式時,當 MsgBox 出現 3 秒之後,就會自動關閉了!
注意:此方法的限制說明:
1、當常數設定為 VbAbortRetryIgnore 或 VbYesNo 時,無效!
2、在 Design Time 時,無效,必須 Make EXE 之後才有效!
已经不知道出处,从这个帖子中粘贴下来
http://topic.csdn.net/t/20040506/18/3036843.html
來源:Ask the Visual Basic Pro
版本:VB6 / VB5 / VB4-32
--------------------------------------------------------------------------------
在我們的印象中,VB 所提供的 MsgBox 是一個強制回應的視窗,您一定要按了其中的某一個 CommandButton 之後,它才會關閉!但是在某些軟体中,我們會看到,明明是使用系統的 MsgBox,可是您如果不理它,幾秒鐘之後,它就自行關閉了!別人是如何做到的呢?這個問題偶而會出現在討論區中,有的人會回答:
只要自己做一個類似 MsgBox 的視窗,就可以自己用 Timer 來控制這個視窗何時要關閉了!
但是,其實不用這麼麻煩的,只要使用系統的 MsgBox 再加一個 Timer 就可以控制了!
我們都知道 MsgBox 可以設定成很多不同的樣子,可以有很多不同的圖示,不同的按鈕,其中控制按鈕的部份,可以設定的常數如下:
常數 值 說明
vbOKOnly 0 只顯示 OK 按鈕。
VbOKCancel 1 顯示 OK 及 Cancel 按鈕。
VbAbortRetryIgnore 2 顯示 Abort、 Retry 及 Ignore 按鈕。
VbYesNoCancel 3 顯示 Yes、No 及 Cancel 按鈕。
VbYesNo 4 顯示 Yes 及 No 按鈕。
VbRetryCancel 5 顯示 Retry 及 Cancel 按鈕。
為什麼要特別提到 MsgBox 的常數呢?因為下面我們要告訴您的方法,還是有一點點限制的!當您設定的常數是 VbAbortRetryIgnore 或 VbYesNo 時,下面的方法也是沒用的!
'在表單的宣告區中加入以下的宣告
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long
Private Const WM_CLOSE = &H10
Private Const MsgTitle As String = "Test Message"
'在表單中加入一個 CommandButton 及一個 Timer 控制項,加入以下程式碼:
Private Sub Command1_Click()
Dim nRet As Long
Timer1.Interval = 3000
Timer1.Enabled = True
nRet = MsgBox("若您不回應的話,3 秒後此 MsgBox 會自動關閉", 64, MsgTitle)
Timer1.Enabled = False
End Sub
Private Sub Timer1_Timer()
Dim hWnd As Long
hWnd = FindWindow(vbNullString, MsgTitle)
Call SendMessage(hWnd, WM_CLOSE, 0, ByVal 0&)
End Sub
好了,很簡單吧!您執行程式時,當 MsgBox 出現 3 秒之後,就會自動關閉了!
注意:此方法的限制說明:
1、當常數設定為 VbAbortRetryIgnore 或 VbYesNo 時,無效!
2、在 Design Time 時,無效,必須 Make EXE 之後才有效!
已经不知道出处,从这个帖子中粘贴下来
http://topic.csdn.net/t/20040506/18/3036843.html
相关文章推荐
- QTP:代替Msgbox的方法,可以定时自动关闭
- 定时自动关闭MsgBox
- xmlSpy已经破解了,但是每次启动都会自动关闭,下面的方法可以屏蔽xmlSpy联网。
- Windows自动更新进程wuauclt.exe 进程服务关闭方法
- [Excel VBA]如何自动关闭MsgBox?
- QQ旋风自动关闭解决方法
- JS实现定时自动关闭DIV层提示框的方法
- win7下关闭wps热点和wps云文档自动漫游的方法
- xftp 自动关闭解决方法(win2003)
- [原创]修复VS2005(Visual Studio2005)调试自动关闭问题[成功方法!]
- Javascript两种方法实现数秒自动关闭弹窗
- C#弹窗提示并自动关闭方法
- Win8.1升级Win10系统后不会自动关闭屏幕的故障原因及解决方法
- android支付宝客户端html5网页无法自动关闭问题的解决方法
- Linux下LCD自动关闭解决方法
- xp系统提示自动更新问题的三种关闭方法
- 几种关闭U盘自动播放方法总结
- Win8系统自动磁盘重组关闭改为手动开启方法
- tomcat 启动有报错,但是很快就自动关闭了,太快了看不到信息,解决方法
- C#实现延时并自动关闭MessageBox的方法