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
' 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
不显示画面是因为与桌面交互的缘故有问题咨询qq 17310603
晕我只会用VB 上面就是想利用程序相互监测 当然线程注入最好 可用VB怎么做呀
2 在服务中监视主程序,如果不存在就启动
3 主程序中循环查看服务是否在运行,没运行启动服务(服务设成可与桌面交互)正想办法做在程序里,相关API找不全资料 楼下我贴个帖子是 Delphi的实现代码 可看不明白