如何使用python脚本从其他应用程序关闭弹出窗口

如何使用python脚本从其他应用程序关闭弹出窗口,python,aspen,Python,Aspen,我正在使用Python自动化Aspen Plus模拟和结果后处理。进行放大分析、敏感性研究和解决优化问题;我必须迭代多次运行aspen模拟 这样,我使用win32com.client来管理它。它工作得很好,但有时aspen会显示一个弹出窗口,告知所有许可证都在使用中,从而中断程序流程: 如果我手动关闭它,程序将继续工作。因此,我正在考虑编写一个脚本来实现自动化,但我不知道如何做到这一点 我试图杀死,终止,向进程发送信号。但是没有任何效果,因为杀死AspenPlus.exe进程会停止程序。以下是一

我正在使用Python自动化Aspen Plus模拟和结果后处理。进行放大分析、敏感性研究和解决优化问题;我必须迭代多次运行aspen模拟

这样,我使用win32com.client来管理它。它工作得很好,但有时aspen会显示一个弹出窗口,告知所有许可证都在使用中,从而中断程序流程:

如果我手动关闭它,程序将继续工作。因此,我正在考虑编写一个脚本来实现自动化,但我不知道如何做到这一点


我试图杀死,终止,向进程发送信号。但是没有任何效果,因为杀死AspenPlus.exe进程会停止程序。

以下是一些示例powershell代码,可用于检查Aspen进程是否正在运行,以及窗口是否打开,然后通过sendKey函数发送相应的密钥来关闭它

$isAspenOpen = Get-Process Aspen*
if($isAspenOpen = $null){
    # Aspen is already closed run code here:
    }
else {
     $isAspenOpen = Get-Process AspenPlus*

     # while loop makes sure all Aspen windows are closed before moving on to other code:
         while($isAspenOpen -ne $null){
            Get-Process aspen* | ForEach-Object {$_.CloseMainWindow() | Out-Null }
            sleep 5
            If(($isAspenOpen = Get-Process aspen*) -ne $null){
            Write-Host "Aspen is Open.......Closing Aspen"
                $wshell = new-object -com wscript.shell
                $wshell.AppActivate("Aspen Plus")
                $wshell.Sendkeys("%(Esc)")
            $isAspenOpen = Get-Process Aspen*
            }
        }
        #Aspen has been closed run code here:
    }

感谢Psychon Solutions!它起作用了!!我从python中使用它,如下所示:

import win32com.client as win32

shell = win32.Dispatch("WScript.Shell")
shell.AppActivate("All licenses are in use")
shell.Sendkeys("%{F4}", 0)

现在,我只需改进代码即可自动执行任务。

如果您想自动执行此任务,可以为windows创建一个与cronjob等效的任务,称为计划任务。您可以选择日期、时间等。。您希望执行计划的任务。我想这就是你想要的那种自动化?是的,是的。我做了一个简单的脚本,检查窗口是否每30秒打开一次,如果是这样,关闭它。它工作得很好!现在我可以继续运行我的模拟,睡个好觉了:D