Excel:检测OLE自动化?

我们有一个使用OLE将数据写入Excel的第三方程序。 不幸的是,该应用程序的程序员不明白,使Excel的隐形和隐藏更新速度超过极大的。 此时,大件工作需要15分钟才能完成,这很烦人。 所以我想编写一个Addin,当程序写入excel时closures可见性等。 有没有办法做到这一点? 它是唯一使用这种技术的应用程序,所以检测COM / OLE交互就足够了。

而是有Excel检查,看看它是否在OLE自动化手中,可以检查正在运行的OLE进程的名称的窗口

就像是

Function isRunning(ProcessName) As Boolean Dim objWMIcimv2 As Object Dim objList As Object Set objWMIcimv2 = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\.\root\cimv2") 'Connect to CIMV2 Namespace Set objList = objWMIcimv2.ExecQuery _ ("select * from win32_process where name='" & ProcessName & "'") If objList.Count > 0 Then isRunning = True End If End Function 

从那里你可以很容易地抑制屏幕更新。 我猜测第三方应用程序通常不会在用户桌面上闲置。 如果是这样,那么显然这种方法不会帮助你。

代码从这个链接终止程序启发