首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Visio自动化:获取进程ID

Visio自动化:获取进程ID
EN

Stack Overflow用户
提问于 2012-05-18 07:06:56
回答 2查看 1.3K关注 0票数 2

我正在使用自动化运行Visio,并且在获得Visio进程的进程ID以检查它何时完成时遇到了问题。下面是我的VB脚本:

代码语言:javascript
运行
复制
Set visio = CreateObject("Visio.InvisibleApp")
Wscript.Echo visio.ProcessID    
Set document = visio.Documents.OpenEx("somefile.vsd", &H88)
document.ExportAsFixedFormat 1, "somefile.pdf", 1, 0
visio.Quit

并使用cscript // nologo运行它。

问题是,visio.ProcessID返回的数字不是实际的Windows (例如,当实际进程ID为8146时,为6613 )。cscript主机似乎在Visio进程退出之前完成,导致清理临时文件时出现问题。

以下是Visio参考说明:

  • ProcessID
  • 退出

因此,问题是:如何获得Visio进程ID或检测它何时正确退出?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2020-03-12 09:41:09

刚才在Visio.Application.ProcessID的帮助中注意到了这一点:

“ProcessID返回的值与当前Visio实例的不相同。”

因此,我想这些只是为了区分Visio的多个实例。

还有Visio.Application.WindowHandle32和Visio.Application.WindowHandle,这可能会有所帮助,尽管对于一个不可见的应用实例来说可能不是那么有用。

票数 1
EN

Stack Overflow用户

发布于 2012-08-05 22:14:52

我看不出这个身份对你有什么帮助。我怀疑你在visio上有个错误。你试过了吗

代码语言:javascript
运行
复制
on error resume next

在每一行之后,都会出现错误

代码语言:javascript
运行
复制
if err.number <> 0 then
  wscript.echo err.description
  err.clear
end if

如果省略参数,似乎存在问题,所以请全部使用它们。有关值,请参见http://msdn.microsoft.com/en-us/library/office/ms409271(v=office.12).aspx。在退出使用document.saved = true之前,可以先检查结果文件是否存在。

编辑:检查进程是否正在运行,是否必须修改服务的名称(检查the )

代码语言:javascript
运行
复制
set service = GetObject ("winmgmts:")

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"

EDIT2:要获取active visio应用程序的processid (如果多个Visio实例正在运行,则GetObject返回活动实例。当程序是作为附加或双击形状运行时,活动实例就是程序运行的对象。否则,它就是最近运行或被带到最前面的实例。如果没有运行Visio实例,GetObject将导致一个错误) cfr http://webmail.vh.com.tw/Microsoft/Developing%20Microsoft%20Visio%20Solutions/27.htm

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10648180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档