我有一个使用tcom库来访问COM对象的应用程序。在我的程序结束时,我正在尝试删除COM对象。以下是我的参考。
这是我的程序
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对象?
答案 0 :(得分:1)
我对tcl一无所知,但我确实知道COM。你的对象应用程序没有实现Quit方法,就像它说的那样。
然而
unset application
将删除COM对象并从内存中卸载它。
如果对象还有close
或exit
方法,您可以先调用它,但是您需要检查应用程序对象的文档。
答案 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接口调用什么方法来终止应用程序。