如何使用VBScript检查MS Word是否正在运行

时间:2014-02-21 10:58:21

标签: vbscript process

我们有一个运行MS Word(隐藏)的应用程序来打印文档。

如果其中一台打印机出现问题,则Word会在等待假脱机程序返回“排队”消息时挂起。

我们发现,如果我们使Word可见(例如,使用带有GetObjectoWordApp.visible=true的Excel中的VBA),则该过程将继续打印其他文档,没有任何问题。

我们希望通过在运行进程中对Word进行VBScript检查,使其更自动化,如果找到它,使其可见,等待几秒钟,隐藏它,然后退出...

但我有一个问题,即如果VBScript GetObject函数尚未运行,则会对其进行实例化。

如何在不创建实例的情况下使用VBScript检查该字是否正在运行?

这是我在VBScript文件中的代码:

dim oWord, WScriptShell

set oWord = getobject("", "Word.Application")
set WScriptShell = CreateObject("WScript.Shell")

if isobject(oWord)  then 'and oWord.Documents.count>0
    wscript.echo("Word is running")
    oWord.visible=true
    WScript.Sleep 1000
    oWord.visible=false
else
    wscript.echo("Word not running")
end if

那么我应该使用什么来检查单词是否正在运行而不创建它的实例?

2 个答案:

答案 0 :(得分:4)

只需将GetObject("", "Word.Application")更改为GetObject(, "Word.Application")即可启动实例 但如果Word 正在运行,则会引发错误,因此您可以像这样使用它:

msgbox wordIsRunning

function wordIsRunning
    dim wdApp
    on error resume next
    set wdApp = GetObject(, "Word.Application")
    wordIsRunning = (err.Number = 0)
    set wdApp = nothing
end function

答案 1 :(得分:0)

  

Word挂起

检查“DisplayAlerts”属性。仅当属性“Visible”设置为“True”时才允许。

  

任务列表/ FI“IMAGENAME eq winword.exe”

会告诉你,m $ word是否正在运行