新浪博客

Python使用pywin32关闭窗口(WM_CLOSE)脚本

2014-08-06 10:57阅读:
Python写脚本的时候,遇到这么一个问题,笔者需要通过脚本去关闭一些窗口,比如关闭浏览器的窗口。这种关闭行为类似于手动去点叉关闭(比较温和,窗口程序可以有反应的时间),而不是强制地kill进程(比较暴力,但是导致窗口来不及进行一些处理就被关闭)。

笔者使用的方法是通过枚举当前可视的所有窗口,判断窗口的标题。例如要关闭Chrome,就判断窗口的标题是否含有“Chrome”,如果有,则将其关闭。这种方法可能会关闭一些其它的窗口,所以使用的时候要小心一点。但是优点是实现起来非常简单。

笔者使用的Python版本为3.4,需要额外使用一个pywin32来操纵windows平台的窗口。

Python代码:
import win32gui
from win32.lib import win32con
import time

def handle_window(hwnd, extra):
if win32gui.IsWindowVisible(hwnd):
if 'Chrome' in win32gui.GetWindowText(hwnd):
pan > win32gui.PostMessage(hwnd, win32con.WM_CLOSE, 0, 0)


if __name__ == '__main__':
win32gui.EnumWindows(handle_window, None)
time.sleep(5)
# TODO If app didn't close, force close.

我的更多文章

下载客户端阅读体验更佳

APP专享