gpt4 book ai didi

.net - 如何退出或关闭(而不是杀死)Word文档(进程)?

转载 作者:行者123 更新时间:2023-12-02 20:53:34 25 4
gpt4 key购买 nike

在我们公司,我们使用 Windows 应用程序生成 Word (2010) 文档。有时文档没有正确关闭,因此另一个应用程序(是的,他们仍然称之为开发:)杀死运行超过1分钟的word进程。

这些被杀死的进程存储在MS Word的“文档恢复”中。这些文档恢复无法在 Word 2010 中关闭(选项/“保存自动恢复信息..”不能解决问题)。当这些“文档恢复”充满文档(数十或数百)时,应用程序停止生成文档,我们需要手动清除前面的内容。

我能够编写此脚本来识别并杀死运行时间超过 10 秒的进程,但是有没有办法正确关闭它(而不杀死它)?

我找到了使用 powershell 创建和退出 Word 文档的教程,但是如何使用这些 MS Office 方法连接特定的 Word 进程来关闭文档?

Powershell and Word tutorial

$timer = 10
$date = Get-Date

if (Get-Process winword*) {
Get-Process winword | foreach {
if ((($date - $_.StartTime).Seconds) -gt $timer) {
$procID = $_.id
Write-Host -ForegroundColor Magenta "Process $procID is running longer than $timer seconds."
Write-Host -ForegroundColor Green "Killing process $procID.."
Stop-Process $procID
}
}
}

最佳答案

您需要按照描述附加到正在运行的 Word 实例 here ,然后关闭文档:

$wd = [Runtime.Interopservices.Marshal]::GetActiveObject('Word.Application')
$wd.Documents | ? { $_.Name -eq 'some.docx' } | % {
$_.Saved = $true
$_.Close()
}

这必须在启动应用程序的用户的上下文中运行,并且它只会附加到第一个启动的实例(通常只有一个实例在运行)。您需要先退出该实例,然后才能附加到第二个启动的实例。

关于.net - 如何退出或关闭(而不是杀死)Word文档(进程)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18191431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com