通过tcom删除COM对象

时间:2015-08-23 04:32:57

标签: com tcl

我有一个使用tcom库来访问COM对象的应用程序。在我的程序结束时,我正在尝试删除COM对象。以下是我的参考。

http://wiki.tcl.tk/11900

这是我的程序

  package require tcom

  # create COM objec
  set application [::tcom::ref createobject "MyApplication"]

  # unbind and release COM object 
  ::tcom::unbind  $application 
  set application {}
  $application Quit 
  unset application 

结果证明是

  object does not implement method or property Quit

如何正确删除COM对象?

2 个答案:

答案 0 :(得分:1)

我对tcl一无所知,但我确实知道COM。你的对象应用程序没有实现Quit方法,就像它说的那样。

然而

unset application 

将删除COM对象并从内存中卸载它。

如果对象还有closeexit方法,您可以先调用它,但是您需要检查应用程序对象的文档。

答案 1 :(得分:0)

在我看来,好像你有这两行错误的方式:

  set application {}
  $application Quit 

您重置application然后尝试使用它。

然而,正如Donal在下面指出的那样,这不会导致您收到的错误消息,并且我怀疑您的应用程序MyApplication未实现实际实现Quit方法。

您可以使用tcom找出接口定义的方法和属性,例如以下代码为Excel执行此操作。

package require tcom
set excel [::tcom::ref createobj Excel.Application]

set iface [::tcom::info interface $excel]
foreach {method} [$iface methods] {
    puts $method
}

puts "--"
foreach {property} [$iface properties] {
    puts $property
}

$excel Quit
unset excel

这应该允许您查看方法及其参数以及MyApplication实际公开的属性,如果没有“退出”方法,那么您需要返回应用程序的所有者并查找out需要通过com接口调用什么方法来终止应用程序。