gpt4 book ai didi

python - 从 windows 系统服务 python 调用 .exe?

转载 作者:可可西里 更新时间:2023-11-01 10:49:08 31 4
gpt4 key购买 nike

我有一个正在尝试编写的 Windows 系统服务。我正在尝试 POS 机的接口(interface),所以理想情况下我想将此代码包含在系统服务中。然而,一些实验让我相信 Windows 系统服务只会执行基本任务而不是其他迭代。

我有另一个函数需要每隔 x 秒调用一次,这个附加函数是一个 while 循环,但我无法让我的函数和 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, 0, 0, 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,子进程模块的变体调用无济于事,似乎 Windows 只是忽略了它们。有什么想法吗?

编辑:回到原来的问题

最佳答案

不能这么说,因为我熟悉 Windows 开发,但在 *nix 中,我发现套接字在两个事物按定义不能对话但无论如何都需要它们的情况下非常有用,例如使网络浏览器启动桌面应用程序,使剪贴板与浏览器交互等。

在大多数情况下,UDP 套接字是您需要一点 IPC 的全部,并且它们在 Python 中编写代码很简单。不过你必须格外小心,通常限制是有充分理由的,你需要在打破规则之前真正理解规则......记住任何人都可以发送 UDP 数据包,所以确保接收应用程序只接受来自本地主机的数据包,并确保您对所有传入的数据包进行完整性检查,以防止本地黑客/恶意软件。如果传输的数据特别敏感或启动的操作非常强大,那么这可能根本不是一个好主意,只有您非常了解您的应用才能说出真相。

关于python - 从 windows 系统服务 python 调用 .exe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12029506/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com