找回密码
 加入
搜索
查看: 16127|回复: 41

[系统综合] [已解决]将一个程序注册成服务后,运行过程中会自动退出是怎么回事?

 火... [复制链接]
发表于 2011-5-17 12:23:21 | 显示全部楼层 |阅读模式
本帖最后由 卫和谐 于 2011-5-25 16:09 编辑

重写“防止上网沉迷系统”过程中,想放弃开机启动的方式,将软件注册成服务随机启动,可是在测试中发现,有时候运行中的程序会莫名地退出,一般是在锁定界面后,想不明白!?

在服务管理器中点击配置的服务,会显示:指定的设备实例句柄与目前设备不一致!
如果启动配置的服务的话,显示:1053,服务没有及时响应启动或控制请求!

是否和这段代码有关?
While 1
        HideProcess()
        $OldT = _GUICtrlStatusBar_GetText($UnlockStatusbar, 1)
        $NewT = _Now()
        If $NewT <> $OldT Then _GUICtrlStatusBar_SetText($UnlockStatusbar, _Now(), 1)
        $Gmsg4 = GUIGetMsg()
        Switch $Gmsg4
                Case $UnlockButton
                        $Password = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\PcLimit", "PassWord")
                        If GUICtrlRead($UnlockRadio1) = $GUI_CHECKED Then
                                If GUICtrlRead($UnlockInput) = "" Then
                                        GUICtrlSetData($LockLabel, "您未输入密码!")
                                        GUICtrlSetState($UnlockInput, $GUI_FOCUS)
                                ElseIf GUICtrlRead($UnlockInput) <> $Password Then
                                        GUICtrlSetData($LockLabel, "输入密码错误!")
                                        GUICtrlSetState($UnlockInput, $GUI_FOCUS)
                                ElseIf GUICtrlRead($UnlockInput) <> "" And GUICtrlRead($UnlockInput) = $Password Then
                                        Quit()
                                EndIf
                        ElseIf GUICtrlRead($UnlockRadio2) = $GUI_CHECKED Then
                                If GUICtrlRead($UnlockInput) = "" Then
                                        GUICtrlSetData($LockLabel, "您未输入密码!")
                                        GUICtrlSetState($UnlockInput, $GUI_FOCUS)
                                ElseIf GUICtrlRead($UnlockInput) <> $Password Then
                                        GUICtrlSetData($LockLabel, "输入密码错误!")
                                        GUICtrlSetState($UnlockInput, $GUI_FOCUS)
                                ElseIf GUICtrlRead($UnlockInput) <> "" And GUICtrlRead($UnlockInput) = $Password Then
                                        RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\PcLimit", "Runtime1", "REG_SZ", "1")
                                        RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\PcLimit", "Runtime2", "REG_SZ", "1")
                                        Quit()
                                EndIf
                        EndIf
                Case $UnlockIcon
                        Shutdown(5)
        EndSwitch
WEnd
因为也许有人会需要,所以开了新帖:http://www.autoitx.com/forum.php ... mp;extra=#pid307566
 楼主| 发表于 2011-5-17 14:03:57 | 显示全部楼层
是不是循环中出现的问题?
发表于 2011-5-17 14:14:16 | 显示全部楼层
服务不是随便注册,需要遵循一种规则
发表于 2011-5-17 14:15:43 | 显示全部楼层
 楼主| 发表于 2011-5-17 19:59:57 | 显示全部楼层
回复 4# wsfda

我是通过注册表添加服务的,理论上没有问题,而且重新启动时服务会启动,只是运行到锁定界面后会自动关闭窗口(结束进程),是上面代码的问题吗,查找不出原因!
发表于 2011-5-18 13:05:48 | 显示全部楼层
更细节的东西,就不懂了,等版主什么时候有空来看下吧,
帮顶
 楼主| 发表于 2011-5-18 14:01:04 | 显示全部楼层
本帖最后由 卫和谐 于 2011-5-18 20:57 编辑

在服务管理器中点击配置的服务,会显示:指定的设备实例句柄与目前设备不一致!
如果启动配置的服务的话,显示:1053,服务没有及时响应启动或控制请求!
发表于 2011-5-18 14:04:32 | 显示全部楼层
服务要用服务的规则吧,我也想知道,呵呵
 楼主| 发表于 2011-5-18 18:23:25 | 显示全部楼层
P版看到的话,是否可以帮助分析一下原因???
发表于 2011-5-18 23:09:36 | 显示全部楼层
衛老大.....給個建議....我看過你之前的 防止上網沉迷1.7  基本上 管控的方式 是.......使用多少時間就鎖定

既然這個打算寫給 家長用的.....是為了防止上網沉迷的.......那是不是可以寫成

星期一 到星期天  每天 可以訂出  可上網 跟 部可上網的時段........( 可用電腦 跟不可用電腦)

這樣把電腦丟給小孩 他們自己時間到了 就該關掉了....... 等到可以用的時候 才可以在去用

想法啦
 楼主| 发表于 2011-5-19 06:07:26 | 显示全部楼层
回复 10# kk_lee69

那样比较复杂,现在重点是从可功能上、人性化上下手!
发表于 2011-5-19 09:14:10 | 显示全部楼层
系统服务是运行在用户登录之前的,不知是否与这有关?
 楼主| 发表于 2011-5-19 10:25:28 | 显示全部楼层
回复 12# easefull

服务设置管理器中,有的服务项目在开机后照常可以启动和禁止!与开不开机没关系吧!
发表于 2011-5-19 10:57:04 | 显示全部楼层
服务要与scm(services.exe)通讯,如果缺少这部份就会出现不可控制,就如LZ你前面说的“没有及时响应启动或控制请求”
另外,带window界面还要设置属性,允许与桌面交互。
........
发表于 2011-5-19 11:14:49 | 显示全部楼层
回复  easefull

服务设置管理器中,有的服务项目在开机后照常可以启动和禁止!与开不开机没关系吧!
卫和谐 发表于 2011-5-19 10:25


我指的不是服务的启动控制,而是程序的工作环境不同.

像以下代码
Ping("www.163.com")
If @error Then Exit
While 1
        Sleep(1000)
WEnd

如果这程序是在正常登录后才运行,那么程序是不会自动退出的.
但是,如果你把这加到系统服务,那么大多数多电脑上都是直接就退出了——因为运行这个服务的时候,你的电脑还没有联上网.

你的程序在正常执行时无异常,但加到系统服务则出错.是否可以从这方面来考虑?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-16 16:45 , Processed in 0.081738 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表