http://www.cnblogs.com/unruledboy/archive/2004/08/18/34359.html惭愧!有了范例也不会用,上面地址中是个把VB程序设置为XP/2000服务的代码范例,我本想利用这个范例做一个程序不死,如在服务程序中加入监控代码,如果发现主程序被关系,立即重新启动程序,并在主程序中监视服务程序的运行,如果被禁止或暂停则立即重新启动等等,但现在发现在服务中启动程序无法看到界面,似乎启动的程序也变成系统服务程序了,请教高手指点 谢谢        '启动及监控程序段
        ' CreateProcess函数,用于创建一个新的进程
        ires = CreateProcess(RunFile$, vbNullString, 0, 0, True, _
                            NORMAL_PRIORITY_CLASS, ByVal 0&, vbNullString, sinfo, pinfo)
        If ires Then
            ' 等待指定的进程进入空闲状态,,空闲(Idle)指的是进程准备处理一条消息、但目前暂          时没有消息需要处理的一种状态
            Call WaitForInputIdle(pinfo.hProcess, INFINITE)
        End If        Do
            '等待发出信号
            res = WaitForSingleObject(pinfo.hProcess, 0)
            If res <> WAIT_TIMEOUT Then      '如果对象发出了信号
                ' CreateProcess函数,用于创建一个新的进程
                ires = CreateProcess(RunFile$, vbNullString, 0, 0, True, _
                                   NORMAL_PRIORITY_CLASS, ByVal 0&, vbNullString, sinfo, pinfo)
                If ires Then
                ' 等待指定的进程进入空闲状态,,空闲(Idle)指的是进程准备处理一条消息、但目前暂时没有消息需要处理的一种状态
                Call WaitForInputIdle(pinfo.hProcess, INFINITE)
                End If
            End If

解决方案 »

  1.   

    最好不要用vb做服务  会死  
    不显示画面是因为与桌面交互的缘故有问题咨询qq 17310603
      

  2.   

    vansoft(Vansoft Workroom) :
    晕我只会用VB 上面就是想利用程序相互监测 当然线程注入最好 可用VB怎么做呀
      

  3.   

    恩 那还是回到老问题上来拉 线程注入VB 实现不了,那么现在 VB做服务可以了 那么只要在服务里监控主程序不死就成了 主程序在监控服务 让服务一直保持运行就实现相互检测拉 现在就是怎么在服务中启动和监控主程序的问题了 最后一步呀
      

  4.   

    谢谢 我已经初步测试成功了1 用VB创建服务程序
    2 在服务中监视主程序,如果不存在就启动
    3 主程序中循环查看服务是否在运行,没运行启动服务(服务设成可与桌面交互)正想办法做在程序里,相关API找不全资料 楼下我贴个帖子是 Delphi的实现代码 可看不明白