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