我想在某个时间(比如每天17点),弹出个对话框或者用其他方式提醒我该做某件事了。现在主要程序都编好了,就是不知道该怎么提醒我。我试过msgbox,但是优先级太低,如果我在干其他工作,msgbox无法置于最前方,起不到提醒的作用。
注:可以用声音提醒,但不能仅用声音。因为要考虑没有音箱或耳机的情况。
请问如何实现提醒的功能呢??
7 个解决方案
#1
可以做一个最前窗体.
Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const HWND_TOPMOST = -1
Private Sub Form_Load()
Dim retValue As Long
retValue = SetWindowPos(Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, 1)
End Sub
Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const HWND_TOPMOST = -1
Private Sub Form_Load()
Dim retValue As Long
retValue = SetWindowPos(Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, 1)
End Sub
#2
根据以上代码,当时间到就form1.show就可以了
#3
给你一个例子
Dim o, i
Private Declare Function SetWindowPos& Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)
Private Sub Form_Click()
Me.Visible = False
End Sub
Private Sub Form_Load()
o = 10
SetWindowPos Me.hwnd, -1, 0, 0, 0, 0, 3
End Sub
Private Sub Form_Resize()
Label1.Width = Width - 400
Label1.Height = Height - 1200
End Sub
Private Sub Label1_Click()
Unload Me
End Sub
Private Sub Timer1_Timer()
i = i + 1
If i >= 60 * 60 Then
Me.Visible = True
Timer2.Enabled = True
Timer1.Enabled = False
i = 0
End If
End Sub
Private Sub Timer2_Timer()
If o <= 0 Then
o = 10
Timer2.Enabled = False
Me.Visible = False
Timer1.Enabled = True
Exit Sub
End If
o = o - 1
Label1.Caption = "请注意休息啊,你需要休息拉!~ " & CStr(o)
End Sub
Dim o, i
Private Declare Function SetWindowPos& Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)
Private Sub Form_Click()
Me.Visible = False
End Sub
Private Sub Form_Load()
o = 10
SetWindowPos Me.hwnd, -1, 0, 0, 0, 0, 3
End Sub
Private Sub Form_Resize()
Label1.Width = Width - 400
Label1.Height = Height - 1200
End Sub
Private Sub Label1_Click()
Unload Me
End Sub
Private Sub Timer1_Timer()
i = i + 1
If i >= 60 * 60 Then
Me.Visible = True
Timer2.Enabled = True
Timer1.Enabled = False
i = 0
End If
End Sub
Private Sub Timer2_Timer()
If o <= 0 Then
o = 10
Timer2.Enabled = False
Me.Visible = False
Timer1.Enabled = True
Exit Sub
End If
o = o - 1
Label1.Caption = "请注意休息啊,你需要休息拉!~ " & CStr(o)
End Sub
#4
//TO tztz520(午夜逛街) :
你的方法只能解决form没有最小化的情况,可以使窗体处于最前方。
form最小化之后,到指定时间,窗体只会在底端状态栏上闪烁,不会处于最前方。虽然能起到一定的提醒作用,但是效果不明显啊。
你的方法只能解决form没有最小化的情况,可以使窗体处于最前方。
form最小化之后,到指定时间,窗体只会在底端状态栏上闪烁,不会处于最前方。虽然能起到一定的提醒作用,但是效果不明显啊。
#5
//TO zcm123(抵制日货从我做起) :
谢谢你提供的这个例子。将Visible属性置为False倒是一种解决办法。
不过因为我的程序要最小化到系统托盘,所以在窗体最小化情况下,到指定时间将其恢复,并保持始终在最前,这个功能是一定要实现的。
谢谢你提供的这个例子。将Visible属性置为False倒是一种解决办法。
不过因为我的程序要最小化到系统托盘,所以在窗体最小化情况下,到指定时间将其恢复,并保持始终在最前,这个功能是一定要实现的。
#6
学学MSN,用FlashWindow
一个例子
http://mailgate.hongen.cn/pc/program/apitutor/api0007/api01.htm
一个例子
http://mailgate.hongen.cn/pc/program/apitutor/api0007/api01.htm
#7
谢谢各位了!!
问题解决了.
我用SendMessage Me.hwnd, WM_SYSCOMMAND, SC_RESTORE, 0&实现了.
效果不太好.
lxcc(虫子|需要点勇气和信心) 给了我启发,打算有时间的话改成QQ那样,让他在系统托盘上闪烁.
问题解决了.
我用SendMessage Me.hwnd, WM_SYSCOMMAND, SC_RESTORE, 0&实现了.
效果不太好.
lxcc(虫子|需要点勇气和信心) 给了我启发,打算有时间的话改成QQ那样,让他在系统托盘上闪烁.
#1
可以做一个最前窗体.
Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const HWND_TOPMOST = -1
Private Sub Form_Load()
Dim retValue As Long
retValue = SetWindowPos(Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, 1)
End Sub
Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const HWND_TOPMOST = -1
Private Sub Form_Load()
Dim retValue As Long
retValue = SetWindowPos(Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, 1)
End Sub
#2
根据以上代码,当时间到就form1.show就可以了
#3
给你一个例子
Dim o, i
Private Declare Function SetWindowPos& Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)
Private Sub Form_Click()
Me.Visible = False
End Sub
Private Sub Form_Load()
o = 10
SetWindowPos Me.hwnd, -1, 0, 0, 0, 0, 3
End Sub
Private Sub Form_Resize()
Label1.Width = Width - 400
Label1.Height = Height - 1200
End Sub
Private Sub Label1_Click()
Unload Me
End Sub
Private Sub Timer1_Timer()
i = i + 1
If i >= 60 * 60 Then
Me.Visible = True
Timer2.Enabled = True
Timer1.Enabled = False
i = 0
End If
End Sub
Private Sub Timer2_Timer()
If o <= 0 Then
o = 10
Timer2.Enabled = False
Me.Visible = False
Timer1.Enabled = True
Exit Sub
End If
o = o - 1
Label1.Caption = "请注意休息啊,你需要休息拉!~ " & CStr(o)
End Sub
Dim o, i
Private Declare Function SetWindowPos& Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)
Private Sub Form_Click()
Me.Visible = False
End Sub
Private Sub Form_Load()
o = 10
SetWindowPos Me.hwnd, -1, 0, 0, 0, 0, 3
End Sub
Private Sub Form_Resize()
Label1.Width = Width - 400
Label1.Height = Height - 1200
End Sub
Private Sub Label1_Click()
Unload Me
End Sub
Private Sub Timer1_Timer()
i = i + 1
If i >= 60 * 60 Then
Me.Visible = True
Timer2.Enabled = True
Timer1.Enabled = False
i = 0
End If
End Sub
Private Sub Timer2_Timer()
If o <= 0 Then
o = 10
Timer2.Enabled = False
Me.Visible = False
Timer1.Enabled = True
Exit Sub
End If
o = o - 1
Label1.Caption = "请注意休息啊,你需要休息拉!~ " & CStr(o)
End Sub
#4
//TO tztz520(午夜逛街) :
你的方法只能解决form没有最小化的情况,可以使窗体处于最前方。
form最小化之后,到指定时间,窗体只会在底端状态栏上闪烁,不会处于最前方。虽然能起到一定的提醒作用,但是效果不明显啊。
你的方法只能解决form没有最小化的情况,可以使窗体处于最前方。
form最小化之后,到指定时间,窗体只会在底端状态栏上闪烁,不会处于最前方。虽然能起到一定的提醒作用,但是效果不明显啊。
#5
//TO zcm123(抵制日货从我做起) :
谢谢你提供的这个例子。将Visible属性置为False倒是一种解决办法。
不过因为我的程序要最小化到系统托盘,所以在窗体最小化情况下,到指定时间将其恢复,并保持始终在最前,这个功能是一定要实现的。
谢谢你提供的这个例子。将Visible属性置为False倒是一种解决办法。
不过因为我的程序要最小化到系统托盘,所以在窗体最小化情况下,到指定时间将其恢复,并保持始终在最前,这个功能是一定要实现的。
#6
学学MSN,用FlashWindow
一个例子
http://mailgate.hongen.cn/pc/program/apitutor/api0007/api01.htm
一个例子
http://mailgate.hongen.cn/pc/program/apitutor/api0007/api01.htm
#7
谢谢各位了!!
问题解决了.
我用SendMessage Me.hwnd, WM_SYSCOMMAND, SC_RESTORE, 0&实现了.
效果不太好.
lxcc(虫子|需要点勇气和信心) 给了我启发,打算有时间的话改成QQ那样,让他在系统托盘上闪烁.
问题解决了.
我用SendMessage Me.hwnd, WM_SYSCOMMAND, SC_RESTORE, 0&实现了.
效果不太好.
lxcc(虫子|需要点勇气和信心) 给了我启发,打算有时间的话改成QQ那样,让他在系统托盘上闪烁.