Python程序代码
成都创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于成都网站制作、成都网站设计、惠农网络推广、重庆小程序开发、惠农网络营销、惠农企业策划、惠农品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联公司为所有大学生创业者提供惠农建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com
- importwmi
- importos
- c=wmi.WMI()
- watcher=c.Win32_PowerManagementEvent.watch_for(EventType=7)#监视待机事件的语句;
- whileTrue:
- os.system("kdlj.vbs")#运行“连接宽带“的程序,这里还是用了上次那位仁兄的vbs代码;
- watcher()
由于运行时Python程序的控制台窗口一直在那儿,看着有点碍事儿。于是乎想到要是能把他以windowsservice的方式运行,就像其他在windows服务管理器里的程序一样。
最终,在"PythonProgrammingOnWin32"(byMarkHammond)这本书里找到了相关介绍,它里
面有一个简单的模版,把Python程序代码放入相应位置就可以了:
- #SmallestService.py
- #
- #AsampledemonstratingthesmallestpossibleservicewritteninPython.
- importwin32serviceutil
- importwin32service
- importwin32event
- classSmallestPythonService(win32serviceutil.ServiceFramework):
- _svc_name_="SmallestPythonService"
- _svc_display_name_="ThesmallestpossiblePythonService"
- def__init__(self,args):
- win32serviceutil.ServiceFramework.__init__(self,args)
- #Createaneventwhichwewillusetowaiton.
- #The"servicestop"requestwillsetthisevent.
- self.hWaitStop=win32event.CreateEvent(None,0,0,None)
- defSvcStop(self):
- #Beforewedoanything,telltheSCMwearestartingthestopprocess.
- self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
- #Andsetmyevent.
- win32event.SetEvent(self.hWaitStop)
- defSvcDoRun(self):
#把你的程序代码放到这里就OK了
win32event.WaitForSingleObject(self.hWaitStop,win32event.INFINITE)if__name__=='__main__':
win32serviceutil.HandleCommandLine(SmallestPythonService)
#括号里的名字可以改成其他的,必须与class名字一致;
接下来,只要安装一下服务,cmd下运行:SmallestService.pyinstall就行了。
这样,你就可以在windows服务管理器里找到一个名叫"ThesmallestpossiblePythonService"的服务了,设成自动启动,就会开机自动启动并且一直在后台运行了。(眼不见心不烦,)
不过,这样虽然达到目的了,但还是发现个小问题,就是要是想停止该服务,关闭的进度条就愣在那里不动了,必须在进程管理器里把pythonservice.exe关掉才行,这个bug一直没法解决,就是关闭服务的同时,要把监视待机事件取消,否则退不出这个死循环。要是哪位高人看到了,希望可以指点一二。
【编辑推荐】
当前标题:以WindowsService的方式运行Python程序
当前链接:http://www.csdahua.cn/qtweb/news11/297761.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网