【发布时间】:2020-02-24 16:47:57
【问题描述】:
我正在使用一个将 Excel 用作 COM 应用程序的脚本,因此每当我使用 X 按钮关闭我的 scipt 时,它都会在后台打开一个 Excel 任务。
所以我有一个函数可以在我将“退出”作为用户输入时关闭 Exceltask,但我希望能够关闭 控制台 并使用安慰。有什么方法可以改变 X 按钮的行为,所以它会首先触发一个功能,也许?提供有关该功能的想法:
function Close(){
if($workbook){$workbook.close($false)}
if($excel){[void][System.Runtime.InteropServices.Marshal]::ReleaseComObject([System.__ComObject]$excel)}
[gc]::Collect()
[gc]::WaitForPendingFinalizers()
Remove-Variable excel -ErrorAction SilentlyContinue
exit
}
编辑
正如thread (github) 所暗示的那样,通过 x 按钮退出似乎对我来说仍然是一个问题。
所以它感兴趣的原因是that:
“如果 PowerShell 无法控制自己的终止,则事件 从不 启动:因此,关闭窗口/退出终端模拟器将不会运行事件处理程序。”
这正是按下 x 按钮所发生的情况。所以这个问题正在 PS 7.0 中考虑。另外this thread,讨论了同样的问题,也帮我找到了github上的线程。
【问题讨论】:
标签: powershell com event-handling exit