Şu anda Microsoft Outlook için C# .NET Eklentisi üzerinde çalışıyorum. Eklenti'nin amacı, arama girişini Outlook Instant Search'ten yakalamak ve bir Özel Bölmede kendi arama sonuçlarında göstermektir.Yerel Pencere: Serbest Bırakma Kolu Açık
Oldukça iyi çalışıyor ve Outlook Penceresini Yerel Pencereyle alt sınıflara ayırmak için arama dizesini alıyorum ve bunu zaten panelime aktarıyorum.
sorun (via "Dosya-> Seçenekler> Add-Ins-'den> COM eklentiler" bölmesinde X ile ancak değil) Add-In kapattığınızda o, şimdi Eklenti anında sonlandırılır ve WndProc zincirimi geri yüklemek için önce searchboxWindow.ReleaseHandle()
'u arayamıyorum. Outlook, görünür bir hata olmadan çöküyor.
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;
}
}
Zaten Eklenti kapalı çağrılacak gereken birkaç pencere Mesajları dinlemeye çalıştım, ama normal bir şekilde Outlook kapattığınızda bu mesajlar sadece görünür. Ayrıca, AppDomain.CurrentDomain.ProcessExit
, this.Shutdown
veya ((Outlook.ApplicationEvents_10_Event)this.Application).Quit
gibi ana Eklenti kaynak dosyasındaki olaylar çağrılmadı.
Eklenti sona erdiğinde (güvenilir bir şekilde) işten çıkaracağım hangi olayı dinleyebilirim? Biraz var mı? Eğer değilse, benim problemimi çözmek için hangi alternatifler var?
Dipose() yöntemini denediniz mi ve Dipose olayına bir yöntem eklediniz mi? –
IDisposable arabirimini uyguladı ve orada ReleaseHandle() olarak adlandırdım, ancak hiçbir etkisi olmadı? Demek istediğin bu mu? –
Pencerenin alt sınıfını kaldırmak için eklentinizin Kapatma olayını kullanın. Otomatik oluşturulan ThisAddIn_Shutdown() olay işleyicisi korkunç bir dile sahiptir, ancak bu belirli senaryoda hala yükseltilmiştir. –