怎么来用vb定时循环运行

a2048 2008-11-25 03:23:36
只要程序运行就自动打开126.com网站,等过了5分钟后再自动打开163.com网站,等7分钟后再重新打开126.com,就这样循环,也就是说在在13分钟内要打开二个网站,第二个网站必须等7分钟后才能打开,循环操作。
下面是我的测试程序,但只能做到每5分钟就执行打开126.com,不能在打开126.com 后在等7分钟后打开163.com
Option Explicit

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Const TENMINUTE = 300

Private Sub Form_Load()

Timer1.Interval = 1000
Timer1 = True


End Sub

Private Sub Timer1_Timer()
Static lngCount As Long


If lngCount = TENMINUTE Then
prog

lngCount = 0


Else
lngCount = lngCount + 1

End If


End Sub

'执行程序段
Private Sub prog()


Shell "C:\Program Files\Mozilla Firefox\firefox.exe http://126.com", vbHide


End Sub

...全文
702 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
莫情莫钱 2008-11-26
  • 打赏
  • 举报
回复
楼上说的是,路过
aohan 2008-11-26
  • 打赏
  • 举报
回复
搞这种连续弹出窗体的事情,我不喜欢,和流氓软件没什么区别,不写代码
Tiger_Zhao 2008-11-26
  • 打赏
  • 举报
回复
我的程序本身只有一个 Timer,也没有新建任何对象,耗用资源很少。
你要考虑的是:不断通过命令行调用 firefox.exe,它会不会不断地开出新的窗口或标签页。
a2048 2008-11-25
  • 打赏
  • 举报
回复
Tiger_Zhao 和cs_oldhorse 我试过是可以的。
请问你们二位这样编译好之后长时间运行会很耗资源吗?因为我想把这个方法用到服务器上定时检测数据库。一般服务器2、3个月重起一次。
jhone99 2008-11-25
  • 打赏
  • 举报
回复
Option Explicit

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Const TENMINUTE = 5 '这里我故意用10秒
Const TENMINUTE1 = 7 '这里我故意用10秒


Private Sub Form_Load()

Timer1.Interval = 1000
Timer2.Interval = 1000
Timer1 = True
Timer2 = False


End Sub

Private Sub Timer1_Timer()
Static lngCount As Long

If lngCount = TENMINUTE Then '300秒,就是5分钟,这时候打开一次
prog
lngCount = 0
Timer1.Enabled = False
Timer2.Enabled = True Else
lngCount = lngCount + 1
End If


End Sub

'多加一个时间控件,在第一个打开之后,激活,开始7分钟倒计时
Private Sub Timer2_Timer()
Static lngCount As Long
If lngCount = TENMINUTE1 Then '300秒,就是5分钟,这时候打开一次
prog1
lngCount = 0
Timer2.Enabled = False
Timer1.Enabled = True
Else
lngCount = lngCount + 1
End If


End Sub


'执行程序段
Private Sub prog()
MsgBox "1"

Shell "C:\Program Files\Mozilla Firefox\firefox.exe http://126.com", vbHide


End Sub

'执行程序段
Private Sub prog1()
MsgBox "2"

Shell "C:\Program Files\Mozilla Firefox\firefox.exe http://163.com", vbHide


End Sub
jhone99 2008-11-25
  • 打赏
  • 举报
回复
Option Explicit

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Const TENMINUTE = 2 '这里我故意用10秒
Const TENMINUTE1 = 3 '这里我故意用10秒


Private Sub Form_Load()

Timer1.Interval = 1000
Timer2.Interval = 1000
Timer1 = True
Timer2 = False


End Sub

Private Sub Timer1_Timer()
Static lngCount As Long

If lngCount = TENMINUTE Then '300秒,就是5分钟,这时候打开一次
prog
lngCount = 0
Timer1.Enabled = False
Timer2.Enabled = True
Else
lngCount = lngCount + 1
End If


End Sub

'多加一个时间控件,在第一个打开之后,激活,开始7分钟倒计时
Private Sub Timer2_Timer()
Static lngCount As Long
If lngCount = TENMINUTE1 Then '300秒,就是5分钟,这时候打开一次
prog1
lngCount = 0
Timer2.Enabled = False
Timer1.Enabled = True
Else
lngCount = lngCount + 1
End If


End Sub


'执行程序段
Private Sub prog()
MsgBox "1"

Shell "C:\Program Files\Mozilla Firefox\firefox.exe http://126.com", vbHide


End Sub

'执行程序段
Private Sub prog1()
MsgBox "2"

Shell "C:\Program Files\Mozilla Firefox\firefox.exe http://163.com", vbHide


End Sub
Tiger_Zhao 2008-11-25
  • 打赏
  • 举报
回复
Option Explicit

Private Const TASK_COUNT As Long = 2
Private m_aTaskWaiting(TASK_COUNT - 1) As Long
Private m_aTaskUrl(TASK_COUNT - 1) As String

Private m_TaskID As Long
Private m_CountDown As Long

Private Sub Form_Load()
m_aTaskWaiting(0) = (5 * 60)
m_aTaskWaiting(1) = (7 * 60)
m_aTaskUrl(0) = "http://126.com"
m_aTaskUrl(1) = "http://163.com"

m_TaskID = 0
m_CountDown = m_aTaskWaiting(m_TaskID)

Timer1.Interval = 1000
Timer1 = True
End Sub

Private Sub Timer1_Timer()
m_CountDown = m_CountDown - 1
If m_CountDown <= 0 Then
Shell "C:\Program Files\Mozilla Firefox\firefox.exe " & m_aTaskUrl(m_TaskID), vbHide

m_TaskID = ((m_TaskID + 1) Mod TASK_COUNT)
m_CountDown = m_aTaskWaiting(m_TaskID)
End If
End Sub
cs_oldhorse 2008-11-25
  • 打赏
  • 举报
回复
我在下面试过了,可以实现的
a2048 2008-11-25
  • 打赏
  • 举报
回复
我这样好象一直定时打开第一个126.com,不能打开163.com

Option Explicit

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Const TENMINUTE = 5 '这里我故意用10秒
Const TENMINUTE1 = 10 '这里我故意用10秒


Private Sub Form_Load()

Timer1.Interval = 1000
Timer1 = True


End Sub

Private Sub Timer1_Timer()
Static lngCount As Long
If lngCount = TENMINUTE Then '300秒,就是5分钟,这时候打开一次
prog
lngCount = 0
Timer1.Enabled = False
Timer1.Enabled = True
Else
lngCount = lngCount + 1
End If


End Sub

'多加一个时间控件,在第一个打开之后,激活,开始7分钟倒计时
Private Sub Timer2_Timer()
Static lngCount As Long
If lngCount = TENMINUTE1 Then '300秒,就是5分钟,这时候打开一次
prog1
lngCount = 0
Timer2.Enabled = False
Timer1.Enabled = True
Else
lngCount = lngCount + 1
End If


End Sub



'执行程序段
Private Sub prog()


Shell "C:\Program Files\Mozilla Firefox\firefox.exe http://126.com", vbHide


End Sub

'执行程序段
Private Sub prog1()


Shell "C:\Program Files\Mozilla Firefox\firefox.exe http://163.com", vbHide


End Sub

cs_oldhorse 2008-11-25
  • 打赏
  • 举报
回复
用3个time控制最简单了
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Const INTERVEL1 = 300
Const INTERVEL2 = 420
Private mintTotMin As Long

Private Sub Form_Load()
Timer1.Interval = 1000
Timer1.Enabled = True
Timer2.Interval = 1000
Timer2.Enabled = True
Timer3.Interval = 1000
Timer3.Enabled = True
End Sub

Private Sub Form_Unload(Cancel As Integer)
Timer1.Enabled = False
Timer2.Enabled = False
Timer3.Enabled = False
End Sub

Private Sub Timer1_Timer()
If mintTotMin = INTERVEL1 Then
prog
End If
End Sub

'Ö´ÐгÌÐò¶Î
Private Sub prog()
Shell "D:\Program Files\TheWorld 2.0\TheWorld.exe http://126.com", vbMaximizedFocus
End Sub

Private Sub prog1()
Shell "D:\Program Files\TheWorld 2.0\TheWorld.exe http://163.com", vbMaximizedFocus
End Sub

Private Sub Timer2_Timer()
If mintTotMin = INTERVEL1 + INTERVEL2 Then
prog1
End If
End Sub

Private Sub Timer3_Timer()
If mintTotMin > 0 And (mintTotMin Mod (INTERVEL1 + INTERVEL2) = 0) Then
mintTotMin = 0
Else
mintTotMin = mintTotMin + 1
End If
End Sub
zuoxingyu 2008-11-25
  • 打赏
  • 举报
回复

Const TENMINUTE = 300
Const TENMINUTE1 = 420
Private Sub Timer1_Timer()
Static lngCount As Long
If lngCount = TENMINUTE Then '300秒,就是5分钟,这时候打开一次
prog
lngCount = 0
Timer1.enable=false
timer1.enable=true
Else
lngCount = lngCount + 1
End If


End Sub

'多加一个时间控件,在第一个打开之后,激活,开始7分钟倒计时
Private Sub Timer2_Timer()
Static lngCount As Long
If lngCount = TENMINUTE2 Then '300秒,就是5分钟,这时候打开一次
prog
lngCount = 0
Timer2.enable=false
timer1.enable=true
Else
lngCount = lngCount + 1
End If


End Sub
a2048 2008-11-25
  • 打赏
  • 举报
回复
怎么没有人回答了,我对vb不熟,上面的代码是我从网上查询后组织的。
a2048 2008-11-25
  • 打赏
  • 举报
回复
你能用代码示范给我看吗。
神马都能聊 2008-11-25
  • 打赏
  • 举报
回复
呵呵 你都放了一个timer了,再放一个timer就不难了吧?
然后定义一个strTemp存储一个时间,就可以完成了
Excel下实现贪吃蛇小游戏 上次我们在Excel下实现了一个华容道式的小游戏,使用了Excel中的小部分属性和功能,不到100行语句就完成了。这次我们要把贪吃蛇搬到Excel中,就不那么容易了。 首先要解决游戏显示的问题。对我们来说,小游戏最好的平台是Excel的工作区,由于大小可调、颜色可填的单元格操作方便,我们完全可以把它们当像素来使用。于是我们的贪吃蛇游戏就有了以单元格为基础的像素形式的显示方式了。 其次是游戏的控制方法。在这里我摸索了好久,其中走了弯路不说,我最后的结论是在Excel中要实现按键事件的方法是引入窗体,然后在窗体中响应Keydown与Keypress事件。这样的话,既可以快速响应还可以根据情况修改对应按键。 最后是游戏的定时问题。所有的游戏事实上都是在一个时间大循环里面定时接收输入信息更新状态的程序,我们的小游戏都不例外。老实说,我写这个游戏大部分的思考时间就浪费在如何实现游戏定时这里。Excel的VBA中与定时有关的只有onTime函数,没有其他相关函数提供了,onTime函数可以实现某一事件在指定时间发生,但只能以秒为最小单位,对我们要在一秒内更新数十次信息的小游戏不适合,我们只能另找方法。用过VB的人都知道VB控件中有个定时控件,用它来实现游戏定时是最好的,但在Excel中却没有,难道我要把VB中的定时控件移植到VBA中?这也是个很值得研究的课题,但是我想到了另外的方法。VB的程序员都知道要想VB程序发挥大作用一定离不开调用系统的API,于是我查看了系统相关API的帮助,发现系统API中实现相应功能的有settimer与killtimer函数,具体定义和用法大家可以参考相关帮助,但从字面大家都已经可以知道它们就是我们要找的东西了。那么现在的问题就是如何在vba环境下调用系统API。心想微软称vba就是office中的vb,那么在vba中调用系统API应该也与在VB中的一样。一试,呵呵,果然非虚,这微软真不是盖的(后在msdn中发现ms office vba从2000版本开始支持调用系统API,大家可以拓展office应用了)。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧