我自动使用Qt应用程序中的Excel窗口QAxObject
。 我需要得到通知时,Excel窗口被用户关闭。
Excel工作簿中的COM对象有一个事件BeforeClose()
但它的处理是不够的,因为它是之前提示用户保存更改解雇,所以用户会取消保存确认对话框关闭操作。 因此,即使BeforeClose()
被触发,Excel窗口可能无法关闭。
还有另一种情况下Deactivate()
时,工作簿被取消激活被触发。 当一个窗口实际上被关闭,以及当用户切换到一个不同的工作簿作为此被激发。 因此,处理它独自也是不够的。
我使用目前的解决方案是设置一个布尔变量closing
为真时BeforeClose()
被触发。 当Deactivate()
事件处理程序随后解雇了,我认为Excel中仅当关闭closing
设置为true。
这需要一两件事,创下closing
为false,如果用户取消在保存确认对话框关闭操作。 我用,该方法开始于重复的计时器BeforeClose()
并检查Visible
的Excel COM对象的属性中的计时器。 Visible
属性被评估为假时,一个模式对话框如保存确认对话框打开。 所以,我可以设置closing
,以false
尽快Visible
财产评估,以true
的计时器。
有谁知道一个更好的办法时,Excel工作簿实际上是封闭得到通知?