我有一个函数,可以使用Python 3中PyWin32
模块中的win32service.EnumServicesStatus()
函数枚举Windows系统上的所有服务。我能够获取状态名称,服务描述和状态。问题在于,对于状态而不是获得类似"运行","暂停","停止","重新启动"我得到了7个元素的元组。
一个例子:
status_code = (32, 1, 0, 1077, 0, 0, 0)
C ++
typedef struct _SERVICE_STATUS {
DWORD dwServiceType;
DWORD dwCurrentState;
DWORD dwControlsAccepted;
DWORD dwWin32ExitCode;
DWORD dwServiceSpecificExitCode;
DWORD dwCheckPoint;
DWORD dwWaitHint;
} SERVICE_STATUS, *LPSERVICE_STATUS;
无论如何,有很多可用的信息我只对由元组的第二个元素表示的服务的CurrentState感兴趣。在示例中,它的编号为" 1" (00000001)。
此表显示每个值的含义
SERVICE_CONTINUE_PENDING 0x00000005 The service continue is pending.
SERVICE_PAUSE_PENDING 0x00000006 The service pause is pending.
SERVICE_PAUSED 0x00000007 The service is paused.
SERVICE_RUNNING 0x00000004 The service is running.
SERVICE_START_PENDING 0x00000002 The service is starting.
SERVICE_STOP_PENDING 0x00000003 The service is stopping.
SERVICE_STOPPED 0x00000001 The service is not running.
如何将字符串映射到每个值并显示一个显示当前状态的字符串?
我认为我可以创建这样的字典,然后提取对应于该值的字符串:
status = {"1": "not running", "2": "starting", "3": "stopping", "4": "running", "5": "continue pending", "6": "pause pending", "7": "paused"}
然后我提取元组的第二个值:status_code[1]
,我需要将它与字典status
内的值进行比较。
为了打印服务状态的字符串,我可以执行以下操作:
print(status[str(status_code[1])])
我做对了吗?有没有更好的方法呢?