【问题标题】:how to check that MS Word is running using VBScript如何使用 VBScript 检查 MS Word 是否正在运行
【发布时间】:2014-02-21 10:58:21
【问题描述】:

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

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

我们发现,如果我们让 Word 可见(例如,通过在 Excel 中使用 VBA 和 GetObjectoWordApp.visible=true),那么该过程会继续打印其他文档而没有问题。

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

但我有一个问题,即 VBScript GetObject 函数在 Word 尚未运行时将其实例化。

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

这是我的 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

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

【问题讨论】:

    标签: vbscript process


    【解决方案1】:

    只需将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
    

    【讨论】:

      【解决方案2】:

      字挂了

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

      tasklist /FI "IMAGENAME eq winword.exe"

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

      【讨论】:

      • 那么我应该在我的 VBScript 中包含 tasklist /FI "IMAGENAME eq winword.exe" 吗?
      • 不,那是 windows shell 命令/程序。你可以使用 WScript.Shell 运行它
      猜你喜欢
      • 2011-12-22
      • 1970-01-01
      • 1970-01-01
      • 2020-08-03
      • 2022-12-03
      • 2020-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多