aardio官方社区

标题: 重启Windows系统打印服务 [打印本页]

作者: zhuzhuhawk    时间: 2017-9-25 11:52
标题: 重启Windows系统打印服务
本帖最后由 zhuzhuhawk 于 2017-9-25 11:57 编辑

前段时间遇到一个问题,
电脑打印机忽然不打印了,老是挂起
打印机本身是没问题的。
于是就重启了一下打印服务就好了。
考虑到手动重启有点麻烦,就做了个小工具

不能上传图片,就将代码粘贴如下:

  1. import win.ui;
  2. import win.ui.menu;
  3. import service;
  4. /*DSG{{*/
  5. var winform = win.form(text="打印机服务管理器";right=548;bottom=224;topmost=1)
  6. winform.add(
  7. button1={cls="button";text="重启打印服务";left=131;top=42;right=325;bottom=95;z=1};
  8. static={cls="static";text="点击后等待5~10秒。。。";left=133;top=125;right=329;bottom=154;notify=1;transparent=1;z=2}
  9. )
  10. /*}}*/

  11. winform.static.oncommand = function(id,event){
  12.         //winform.msgbox( winform.static.text );
  13.        
  14.        
  15. }


  16. winform.button1.oncommand = function(id,event){
  17.         //winform.msgbox( winform.button.text );
  18.     //console.open();
  19.     // 停止打印服务
  20.         service.stop("spooler");
  21.     // 停止中,等待2秒左右
  22.     sleep(2000);
  23.     // 提示
  24.     winform.msgbox("打印服务停止","提示");
  25.     // 重启服务中,大概2秒
  26.     service.start("spooler");
  27.     // 等待3秒
  28.     sleep(3000);
  29.     // 提示消息
  30.         winform.msgbox("打印服务重启完成","提示");
  31.        
  32. }
  33. winform.show()
  34. win.loopMessage();
复制代码

作者: Jacen.He    时间: 2017-9-26 03:00
这个重启服务其实还要考虑挺多事情,进程是不是卡死了,检测状态,超时设置等等,
今天我在标准库里加了一个函数,可以简单一些重启服务:
service.restart("spooler")
你可以试试好不好用。

作者: zhuzhuhawk    时间: 2017-9-26 16:39
本帖最后由 zhuzhuhawk 于 2017-9-26 16:46 编辑
Jacen.He 发表于 2017-9-26 03:00
这个重启服务其实还要考虑挺多事情,进程是不是卡死了,检测状态,超时设置等等,
今天我在标准库里加了一 ...


[ s ] 老大,win8 64位亲测,用restart,貌似没反应 [ /s ]
额。。不对
刚刚是我少写了导入sys.service

现在试试,非常好用

作者: Jacen.He    时间: 2017-9-26 17:19
zhuzhuhawk 发表于 2017-9-26 16:39
[ s ] 老大,win8 64位亲测,用restart,貌似没反应 [ /s ]
额。。不对
刚刚是我少写了导入sys.serv ...

好的了解了,谢谢
作者: laniv    时间: 2017-9-26 17:25
Jacen.He 发表于 2017-9-26 03:00
这个重启服务其实还要考虑挺多事情,进程是不是卡死了,检测状态,超时设置等等,
今天我在标准库里加了一 ...

老大,请教个问题:
比如控制某个 服务  禁用,延时,自动,手动 的类型,要怎么写?
我看了下函数说明,具体用法没看懂。。。
作者: Jacen.He    时间: 2017-9-26 19:20
laniv 发表于 2017-9-26 17:25
老大,请教个问题:
比如控制某个 服务  禁用,延时,自动,手动 的类型,要怎么写?
我看了下函数说明 ...

修改服务配置用API ChangeServiceConfig,
服务类型里写 _SERVICE_AUTO_START 就是自动,
库函数说明里没有,可以查询微软相关的MSDN文档。

我已经添加了几个你所说的函数:
import service

var srv  = service.manager()

//设为手动启动
srv.startManual("W3SVC")

//设为自动启动
srv.startAutomatic("W3SVC");

//设为延时启动
srv.startDelayed("W3SVC");

//设为禁用
srv.startDisabled("W3SVC");


作者: laniv    时间: 2017-9-27 10:37
Jacen.He 发表于 2017-9-26 19:20
修改服务配置用API ChangeServiceConfig,
服务类型里写 _SERVICE_AUTO_START 就是自动,
库函数说明里 ...

谢谢老大,又搞定一个事情。




欢迎光临 aardio官方社区 (http://bbs.aardio.com/) Powered by Discuz! X3.4