Python 如何让Microsoft Edge(和其他Windows应用程序)干净地关闭?

Python 如何让Microsoft Edge(和其他Windows应用程序)干净地关闭?,python,winapi,Python,Winapi,我正在用Python编写一些JS基准测试自动化,需要启动并停止MicrosoftEdge。我已经设法让Edge在subprocess.Popen()上运行得很好,但就我的一生而言,我无法让它完全停止运行,也无法让任何其他Windows应用程序停止运行 无论我向MicrosoftEdge.exe或其他应用程序发送什么信号,都会发生以下两种情况之一:什么都没有,或者应用程序被强制终止。我试过WM\u CLOSE,CTRL\u C\u EVENT,SIGINT,等等。基本问题是,我发送的信号是什么,它

我正在用Python编写一些JS基准测试自动化,需要启动并停止MicrosoftEdge。我已经设法让Edge在
subprocess.Popen()
上运行得很好,但就我的一生而言,我无法让它完全停止运行,也无法让任何其他Windows应用程序停止运行

无论我向MicrosoftEdge.exe或其他应用程序发送什么信号,都会发生以下两种情况之一:什么都没有,或者应用程序被强制终止。我试过
WM\u CLOSE
CTRL\u C\u EVENT
SIGINT
,等等。基本问题是,我发送的信号是什么,它等同于用户单击“关闭”按钮?(顺便说一下,我知道Edge是一款UWP应用程序。)

这就是它变得更加有趣的地方。我试图通过调用
taskkill/im来解决这个问题。它在几乎所有Windows应用程序中都能正常工作(例如,如果打开的写字板上有一些文本,则会出现保存提示),但它对Edge完全没有任何作用。我正要开始扯头发:)

有人能解释一下吗?我宁愿保持这个简单,但我可能不得不求助于使用硒之类的东西

试试看:

SendMessage (or PostMessage) (hEdgeTopLevelWnd, WM_SYSCOMMAND, SC_CLOSE, 0);
这应该会让Edge认为用户已经单击了关闭按钮。但是交给你,@IInspectable

但是你是如何获得hEdgeTopLevelWnd的?你需要确保你得到了正确的一个-在UWP应用程序使用的(最小)窗口层次结构中有一些