Outlook资源管理器激活处理程序-DoEvents使Outlook窗口最大化

时间:2019-08-14 14:34:05

标签: outlook-vba

我有一个在启动资源管理器时运行的宏。我发现,如果将DoEvents函数/语句放在宏中,那么每当我使用另一个应用程序(例如,浏览器)然后单击主Outlook(即资源管理器)窗口标题栏时,Outlook窗口都会最大化,就像我双击它一样。

如果我将DoEvents注释掉,则窗口将正常运行。

即使DoEvents是Activate宏中的 only 语句,也会发生此行为。

当发生Activate事件时,宏将按预期运行,但是如果存在DoEvent,则窗口状态无明显变化。

这是一个已知问题吗?

谢谢!

====编辑=====

如果我在ThisOutlookSession中运行以下代码,则会发生奇怪的窗口行为:

Private WithEvents my_x As Explorer

Private Sub Application_Startup()
    Set my_x = Application.ActiveExplorer
End Sub 

Private Sub my_x_Activate()
    DoEvents
End Sub

此外,在浏览器中的项目上单击一次 Outlook没有焦点时会导致该项目打开,就像双击一样。加上偶尔的其他奇怪行为。

我正在Win10中使用Outlook 2013。

2 个答案:

答案 0 :(得分:0)

绝对没有理由使用DoEvents。曾经您可能会窃取Outlook本身希望处理的某些Windows消息。

答案 1 :(得分:0)

首先,建议您扫描计算机上的病毒。

然后,我建议检查Outlook中正在运行的加载项的列表。您可以尝试将其关闭,然后查看Outlook的工作原理。

不需要在DoEvents事件处理程序中使用Activate