gpt4 book ai didi

c# - native 窗口 : Release Handle On Close

转载 作者:太空狗 更新时间:2023-10-29 20:39:00 26 4
gpt4 key购买 nike

我目前正在为 Microsoft Outlook 开发一个 C# .NET 插件。该加载项的目标是从 Outlook 即时搜索中捕获搜索输入,并在自定义 Pane 中显示我自己的搜索结果。

它工作得很好,通过使用 native 窗口子类化 Outlook 窗口,我得到了搜索字符串,并且它已经将其传递到我的面板中。

现在的问题是,当您关闭加载项时(通过“文件->选项->加载项->COM 加载项”),但不 strong> 与 Pane 中的 X),加载项立即终止,我无法事先调用 searchboxWindow.ReleaseHandle() 来恢复我的 WndProc 链。 Outlook 只是崩溃而没有任何可见的错误。

protected override void WndProc(ref Message m)
{
base.WndProc(ref m);

switch ((uint)m.Msg)
{
case WindowMessages.WM_DESTROY:
case WindowMessages.WM_QUIT:
case WindowMessages.WM_NCDESTROY:
this.ReleaseHandle();
return;

case WindowMessages.WM_KEYUP:
case WindowMessages.WM_LBUTTONDOWN:
case WindowMessages.WM_RBUTTONDOWN:
OnKeyUp();
break;

case WindowMessages.WM_EXITSIZEMOVE:
OnResize();
break;
}
}

我已经尝试收听加载项关闭时应调用的一些窗口消息,但这些消息仅在我以正常方式关闭 Outlook 时出现。

此外,主加载项源文件中的事件如 AppDomain.CurrentDomain.ProcessExitthis.Shutdown((Outlook.ApplicationEvents_10_Event) this.Application).Quit 不要被调用。

当加载项终止时,我可以(可靠地)监听什么事件被触发?有一些吗?如果没有,我有什么替代方案可以解决我的问题?

最佳答案

已解决:感谢 Hans Passant

看起来确实是在通过 COM 加载项对话框手动断开加载项时触发了 ThisAddIn_Shutdown 事件。

关于c# - native 窗口 : Release Handle On Close,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31945711/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com