2

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

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

问题

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

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

4

2 回答 2

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:
    }
于 2019-04-25T11:57:43.333 回答
2

感谢心理解决方案!有用!!我从 python 中使用它,如下所示:

import win32com.client as win32

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

现在我只需要改进代码来自动化任务。

于 2019-04-25T12:37:23.553 回答