Visio自动化:获取进程ID


谦逊的毛巾
2025-03-16 03:58:40 (3天前)
  1. 我在跑


Visio中
</跨度>
使用自动化,我在获取进程ID时遇到问题

Visio中
</跨度>
过程检查其完成时间。这是我的VB脚本:



Visio中
</跨度>
= CreateObject(“Visio.InvisibleApp 。

问题是visio.ProcessID返回的数字不是实际的Windows进程ID(例如,实际进程ID为8146时为6613)。 cscript主机似乎在之前完成了

Visio中
</跨度>
过程

2 条回复
  1. 0# 文艺青年3 | 2019-08-31 10-32



    看不出这个id会如何帮助你。我怀疑你的visio错误。你试过吗?




    1. on error resume next

    2. </code>


    并且在每行之后可能会出错




    1. if err.number <> 0 then
      wscript.echo err.description
      err.clear
      end if

    2. </code>


    如果省略参数似乎存在问题,请全部使用它们。
    看到

    http://msdn.microsoft.com/en-us/library/office/ms409271(v=office.12).aspx

    对于价值观。
    在退出之前使用

    document.saved = true

    ,您可以先检查结果文件是否存在。



    编辑:检查进程是否正在运行,可能是您必须调整服务名称(检查您的t askmanager)




    1. set service = GetObject (“winmgmts:”)

    2. for each Process in Service.InstancesOf (“Win32_Process”)
      If lcase(Process.Name) = visio.exe then
      wscript.echo visio still running
      wscript.quit
      End If
      next
      wscript.echo visio no longer running

    3. </code>


    EDIT2:获取活动visio应用程序的processid(如果有多个Visio实例正在运行,GetObject将返回活动实例。当程序作为加载项运行或双击形状时,活动实例是一个是程序运行的。否则,它是最近运行或带到前面的实例。如果没有运行Visio实例,GetObject会导致错误)
    CFR

    http://webmail.vh.com.tw/Microsoft/Developing%20Microsoft%20Visio%20Solutions/27.htm




    1. set appObj = GetObject(, visio.application”)
      if appObj Is Nothing Then
      wscript.echo There is no active Visio.”
      else
      wscript.echo ProcessID: & appObj.ProcessID
      end if

    2. </code>

登录 后才能参与评论