| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1197 人关注过本帖
标题:请教各位高手,在xp系统下,开机运行一个程序的问题。谢谢。
只看楼主 加入收藏
HVB6
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:15
帖 子:331
专家分:561
注 册:2013-10-30
结帖率:98.41%
收藏
已结贴  问题点数:20 回复次数:17 
请教各位高手,在xp系统下,开机运行一个程序的问题。谢谢。
已经能实现此功能,但是,此程序(vb6的exe)只运行一次,如何使其在不人工关闭的情况下,一直不停地运行?
搜索更多相关主题的帖子: xp系统 如何 
2015-07-30 19:11
HVB6
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:15
帖 子:331
专家分:561
注 册:2013-10-30
收藏
得分:0 
用以下代码可以持续一段时间,但不能持续多久:
For i = 0 To 9999999999999999999
 原代码
Next
此法也太笨了。

[ 本帖最后由 HVB6 于 2015-7-30 20:13 编辑 ]
2015-07-30 20:12
HVB6
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:15
帖 子:331
专家分:561
注 册:2013-10-30
收藏
得分:0 
2楼的笨代码也不能实现,开机只运行一次。
2015-07-30 21:07
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:10 
你是提供什么服务吗?

vb写的程序,没有错误的情况下,可以做到 7*24 的运行的。我写过这种的情况的程序,包括使用任务管理器都无法一次性杀死。但能被 taskkill /f /im 干掉。

使用的是双进程互相监控,每 100ms检测一次对方,如何没检测到,就启动对方。其中一个进程负责提供网络的服务。

授人于鱼,不如授人于渔
早已停用QQ了
2015-07-30 21:38
HVB6
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:15
帖 子:331
专家分:561
注 册:2013-10-30
收藏
得分:0 
回复 4楼 风吹过b
能实现1楼要求的代码如何写?
2015-07-30 22:45
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
你程序提供什么功能, 提供完了这个功能后你在做什么?

如,提供网络连接功能,不使用时,等待。
这种程序,你按你的实际去写就OK了。不存在自动退出情况。

如,后台监控,写日志文件。
这也可以按实际去,进入程序后,就自动进入工作状态,也不存在自动退出情况。

一般情况下,只要你没有指定任务结束后程序退出,VB写的EXE在没有报错的情况下,不会自动退出的。
关键就是你的程序要写的健壮。
如错误处理,做的到位,而不是满篇都是 on error resume next ,这样才能尽可能的做到程序健壮。

授人于鱼,不如授人于渔
早已停用QQ了
2015-07-31 10:49
HVB6
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:15
帖 子:331
专家分:561
注 册:2013-10-30
收藏
得分:0 
回复 6楼 风吹过b
1楼的代码如下:
sub test()
     s="d:\数据文件\*.*"
  do while s<>""
      i=i+1
    if i=12 then
      s1="d:\数据文件\*.*"
      set fs=createobject("scripting.filesystemobject")
      fs.copyfile s1,"d:\数据文件备份\",true
      set fs=nothing
      exit do
    end if
     s=dir
  loop
end sub
代码的功能,就是时刻检查“d:\数据文件\”文件夹下的文件个数达到12个,就复制到"d:\数据文件备份\"文件夹中。
要求每天开机就一直运行此代码。此代码复制文件后自动退出。

     
2015-07-31 11:59
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
代码未经任何测试。
窗体上放一个定时器(timer1),一个文件列表框(file1)

代码如下:
程序代码:
Option Explicit
Const S1 = "d:\数据文件\"
Const S2 = "d:\数据文件备份\"

Dim FileJsOld As Long

Private Sub Form_Load()

FileJsOld = ReadFileCount(S2)       '备份目录里文件个数
Timer1.Interval = 10000             '10秒
Timer1.Enabled = True               '开定时器

End Sub

Private Sub Timer1_Timer()

Dim FileJs As Long
Dim i As Long

FileJs = ReadFileCount(S1)          '新目录里文件个数,同时这样读取后,file 控件中是数据文件的路径

If FileJs - FileJsOld >= 12 Then    '大于或等于12个
    For i = 0 To FileJs - 1
        Call Filebak(File1.List(i))
    Next i
    FileJsOld = ReadFileCount(S2)       '如果进行了备份,那么需要重新读备份目录里的文件个数
'如果还要继续监视,那就代码到此为止。
'如果你要结束程序,就再这里再写 end 命令或 unload me 命令
End If

End Sub

Public Sub Filebak(s As String)

If Dir(S1 & s) <> "" Then   '源文件存在
    If Dir(S2 & s) = "" Then        '文件不存在
        FileCopy S1 & s, S2 & s     '复制文件
    Else                    '备份文件存在
        If FileLen(S1 & s) <> FileLen(S2 & s) Then      '仅简单比较文件长度
            Kill S2 & s                                 '不相同则删备份文件
            FileCopy S1 & s, S2 & s                     '复制文件
        End If
    End If
End If
DoEvents                    '前一个是慢速操作
End Sub

Public Function ReadFileCount(s As String) As Long

If Dir(s) = "" Then Exit Function   '目录不存在,直接退出
    
    File1.Path = s                  '文件目录
    File1.Refresh                   '刷新一下
    DoEvents                        '磁盘操作是慢速操作
    ReadFileCount = File1.ListCount     '记录备份文件个数
    DoEvents

End Function


初步判断可以稳定 7*24 小时运行。
有一种错误没处理:磁盘错误,这个你要自己想办法补上。
这个可以使用 on error resume next 进行错误跳过的

[ 本帖最后由 风吹过b 于 2015-7-31 16:47 编辑 ]

授人于鱼,不如授人于渔
早已停用QQ了
2015-07-31 15:42
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
为什么不使用 目录监控 触发来运行呢?

主要是稳定性方面的问题。VB 调用API,没什么问题,回调也没什么问题。
但是,如果长期运行,越是复杂的系统,就越容易出问题,代码越简单越好。
能用VB自己的基本代码解决问题,就尽量使用 VB 自己的代码去解决问题。

检测时间间隔,0.1秒到32秒之间可调。数据是一个 整数,不能超过 32768 的,定时器最小精度是 0.1秒 。
因为磁盘操作是一个慢速操作,为了不影响 系统,所以要多使用 DoEvents 。

授人于鱼,不如授人于渔
早已停用QQ了
2015-07-31 15:47
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:10 
按楼主的题意只需要一个定时扫描目录的功能就够了,用定时器。

能编个毛线衣吗?
2015-07-31 15:48
快速回复:请教各位高手,在xp系统下,开机运行一个程序的问题。谢谢。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040277 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved