Python监控window进程

这是一个使用Python编写的脚本,它通过读取`config.ini`配置文件来获取Google Chrome的程序路径和进程名。脚本利用wmi库遍历系统进程,检查Chrome进程是否在运行。如果Chrome不在运行,脚本将启动Chrome,并清除进程列表,防止资源占用。该脚本每10秒检查一次,确保Chrome服务的正常运行。
摘要由CSDN通过智能技术生成

1.cofig.ini文件 

[MonitorProgramPath]
ProgramPath:C:\Program Files\Google\Chrome\Application\chrome.exe
[MonitorProcessName] 
ProcessName:chrome.exe

2.cofigDemo.py

# -*- encoding: utf-8 -*-
import wmi
import os
import time
from configparser import ConfigParser

CONFIGFILE = 'config.ini'
config = ConfigParser()
config.read(CONFIGFILE)
ProgramPath = config.get('MonitorProgramPath', 'ProgramPath')
ProcessName = config.get('MonitorProcessName', 'ProcessName')
# 读取配置文件中的进程名和系统路径,这2个参数都可以在配置文件中修改
ProList = []
# 定义一个列表
c = wmi.WMI()


def main():
    for process in c.Win32_Process():
        ProList.append(str(process.Name))
    # 把所有任务管理器中的进程名添加到列表
    if ProcessName in ProList:
        # 判断进程名是否在列表中,如果是True,则所监控的服务正在 运行状态,
        print("服务运行中")
    else:
        print("服务正在启动")
        os.startfile(ProgramPath)
        # 调用服务重启
    del ProList[:]
# 清空列表,否则列表会不停的添加进程名,会占用系统资源

if __name__ == "__main__":
    while True:
        main()
        time.sleep(10)
    # 每隔10秒调用脚本看下服务是否正常,如果不正常则重启服务,如果正常,则打印服务正常

Windows 中,可以使用 `win32gui` 模块中的函数来监视并处理窗口消息。具体来说,要监视一个窗口是否收到 `WM_CLOSE` 消息,可以使用以下步骤: 1. 使用 `win32gui.FindWindow()` 函数查找要监视的窗口的句柄。如果窗口句柄已知,则可以直接使用该句柄,否则需要根据窗口的标题或类名等信息来查找窗口句柄。 2. 使用 `win32gui.SetWindowLong()` 函数设置窗口过程函数。窗口过程函数是一个回调函数,用于处理窗口消息。在本例中,需要监视 `WM_CLOSE` 消息,因此需要在窗口过程函数中处理该消息。 3. 在窗口过程函数中处理 `WM_CLOSE` 消息。当窗口收到 `WM_CLOSE` 消息时,可以执行一些操作,例如退出程序。 以下是一个简单的示例代码,可以监视自身窗口是否收到 `WM_CLOSE` 消息: ```python import win32api import win32con import win32gui # 窗口过程函数 def wndProc(hwnd, msg, wParam, lParam): if msg == win32con.WM_CLOSE: # 窗口收到 WM_CLOSE 消息,执行退出操作 win32api.PostQuitMessage(0) return win32gui.DefWindowProc(hwnd, msg, wParam, lParam) # 创建窗口 win32gui.InitCommonControls() hwnd = win32gui.CreateWindow("BUTTON", "My Window", 0, 0, 0, 0, 0, 0, 0, None, None, None) # 设置窗口过程函数 oldWndProc = win32gui.SetWindowLong(hwnd, win32con.GWL_WNDPROC, wndProc) # 进入消息循环,等待窗口消息 while True: msg = win32gui.GetMessage(None, 0, 0) if msg == 0: break win32gui.TranslateMessage(msg) win32gui.DispatchMessage(msg) ``` 在这个示例中,我们创建一个简单的窗口,并在窗口过程函数中处理 `WM_CLOSE` 消息。在消息循环中,我们使用 `GetMessage()` 函数获取窗口消息,如果收到 `WM_QUIT` 消息,就退出消息循环。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值