我的公司有一个可以在 Office 2007 和 2010 上正常运行的 Office 加载项。现在微软有了新的Office 2013,我们需要在Office 2013(32位和64位)中测试插件。
大多数功能工作正常,但不知何故,有一个使用 MsgWaitForMultipleObjects() 的函数在 Office 2013 64 位版本中无法正常工作,它在 32 位 Office 2013 上工作正常。下面是我的代码,它在一个功能:
Dim lReturn As Integer
Do While True
'Wait on event
lReturn = MsgWaitForMultipleObjects(1, handle, 0, timeout, QS_ALLEVENTS)
Select Case lReturn
Case -1
'Call failed
Err.Raise(vbObjectError, "WaitWithEvents", "MsgWaitForMultipleObjects Failed")
Case STATUS_TIMEOUT
'Timed out
WaitWithEvents = STATUS_TIMEOUT
Exit Function
Case 1
'Event needs to be processed
Application.DoEvents()
Case Else
'Event has been signaled
WaitWithEvents = 0
Exit Function
End Select
Loop
大多数情况下,MsgWaitForMultipleObjects() 将返回 -1,Office 应用程序将崩溃/挂起。我是 MsgWaitForMultipleObjects() 的新手,曾尝试在这里和那里更改代码,但仍然无法解决问题。
MsgWaitForMultipleObjects() 是否在 64 位版本的 Office 2013 中运行良好?还是需要专门针对 64 位 Office 进行一些修改?还是我需要以不同的方式注册 DLL?加载项项目设置为任何 cpu。
谢谢。