我正在自动进行Aspen Plus模拟以及使用Python对结果进行后处理。为了进行放大分析,敏感性研究和解决优化问题;我必须重复几次运行aspen仿真。
这样,我使用win32com.client对其进行管理。效果很好,但有时aspen会显示一个弹出窗口,告知所有许可证都在使用中,从而中断程序流:
如果我手动关闭它,程序将继续工作。因此,我正在考虑编写一个脚本来自动执行此操作,但是我不知道如何执行此操作。
我试图杀死,终止,发送信号给该进程。但是没有任何效果,因为杀死AspenPlus.exe进程会停止该程序。
答案 0 :(得分:2)
这里有一些示例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:
}
答案 1 :(得分:1)
感谢Psychon解决方案!有用!!我从python使用它,如下所示:
let val = await socketclass.emitMsg();
现在,我只需要改进代码即可自动完成任务。