微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从Windows系统服务python调用.exe文件?

我有一个Windows系统服务,我试图写。 我正在尝试一个POS机的接口,所以理想情况下我想将这个代码包含在系统服务中。 然而,一些实验已经使我相信,Windows系统服务将只执行基本任务而不是更多的迭代。

我有一个函数,我需要调用每x秒,这个额外的function是一个while循环,但我不能让我的function和win32循环等待系统调用很好地一起玩。 我在下面的代码中更详细地介绍。

import win32service import win32serviceutil import win32event class PySvc(win32serviceutil.ServiceFramework): # net name _svc_name_ = "test" _svc_display_name_ = "test" _svc_description_ = "Protects your computer." def __init__(self,args): win32serviceutil.ServiceFramework.__init__(self,args) # create an event to listen for stop requests on self.hWaitStop = win32event.CreateEvent(None,None) # core logic of the service def SvcDoRun(self): # if the stop event hasn't been fired keep looping while rc != win32event.WAIT_OBJECT_0: # block for 60 seconds and listen for a stop event rc = win32event.WaitForSingleObject(self.hWaitStop,60000) ## I want to put an additional function that uses a while loop here. ## The service will not work correctly with additional iterations,inside or ## the above api calls. ## Due to the nature of the service and the api call above,## this leads me to have to compile an additional .exe and somehow call that ## from the service. # called when we're being shut down def SvcStop(self): # tell the SCM we're shutting down self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) # fire the stop event win32event.SetEvent(self.hWaitStop) if __name__ == '__main__': win32serviceutil.HandleCommandLine(PySvc)

我的研究表明,我需要以某种方式从Windows系统服务调用.exe。 有谁知道如何做到这一点? 我曾尝试使用os.system和subprocess模块的变种调用无济于事,似乎Windows简单地忽略它们。 有任何想法吗?

编辑:恢复到原来的问题

用c#重复控制

在给定的时间和分钟使用crontab时,定期任务不起作用

boost :: random_device的非Linux实现

如何在Windows中获取正在运行的应用程序的PID?

Java JACOB检索给定的Win32_ *类对象的所有属性

在Windows上的Posix和国际扩展

如何在Windows上限制底部窗口全屏最大位置

C#在运行时或更早时间设置stream程描述

自动将IP地址池中的弹性IP分配给自动缩放实例

Windows双插槽

不能说,因为我熟悉Windows开发,但在* nix我发现套接字非常有用的情况下,两件事情应该不能定义谈话,但你需要他们,无论如何,例如使Web浏览器启动桌面应用程序,使剪贴板与浏览器交互

在大多数情况下,UDP套接字就是您需要的一个小小的IPC,而且在Python中编写代码很简单。 你必须要格外小心,经常有限制是有原因的,你需要真正了解规则,然后再打破它…记住任何人都可以发送一个UDP数据包,所以要确保接收的应用程序只接受数据包从本地主机,并确保您的健全检查所有传入的数据包,以防范本地黑客/恶意软件。 如果传输的数据特别敏感,或者所发起的动作是强大的,那么这可能不是一个好主意,只有您知道您的应用程序足够好才能真正说出来。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐