Tôi hiện đang làm việc theo số Bổ trợ C# .NET cho Microsoft Outlook. Mục tiêu của bổ trợ là, để nắm bắt đầu vào tìm kiếm từ Outlook Instant Search và hiển thị trong Ngăn tùy chỉnh kết quả tìm kiếm của riêng tôi.Cửa sổ gốc: Xử lý bản phát hành Đóng Đóng
Nó hoạt động khá tốt và với việc phân lớp cửa sổ Outlook với cửa sổ gốc, tôi nhận chuỗi tìm kiếm và nó đã chuyển chuỗi đó vào bảng điều khiển của tôi.
Vấn đề bây giờ là, khi bạn đóng Add-In (thông qua "File-> Options-> Add-Ins-> COM Add-Ins", nhưng không với X trong cửa sổ) , Add-In bị chấm dứt ngay lập tức và tôi không thể gọi searchboxWindow.ReleaseHandle()
trước để khôi phục chuỗi WndProc của tôi. Outlook chỉ đơn giản là treo mà không có bất kỳ lỗi nhìn thấy được.
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;
}
}
Tôi đã cố gắng nghe một vài thông báo cửa sổ nên được gọi khi bổ trợ bị đóng, nhưng những thông báo này chỉ xuất hiện khi tôi đóng Outlook theo cách thông thường.
Ngoài ra, các sự kiện trong tệp nguồn Add-In chính như AppDomain.CurrentDomain.ProcessExit
, this.Shutdown
hoặc ((Outlook.ApplicationEvents_10_Event)this.Application).Quit
không được gọi.
Tôi có thể nghe sự kiện nào trên đó (đáng tin cậy) khi Add-In bị chấm dứt? Có một số? Nếu không, lựa chọn thay thế nào để giải quyết vấn đề của tôi?
Bạn đã thử Dipose() và đính kèm một phương thức vào sự kiện được nhúng để đảm bảo sự kiện đã thực sự được xử lý? –
Tôi đã triển khai giao diện IDisposable và được gọi là ReleaseHandle() trong đó, nhưng nó không có hiệu lực? Đó có phải là ý bạn không? –
Sử dụng sự kiện Tắt của tiện ích bổ sung để hủy phân lớp cửa sổ. Trình xử lý sự kiện ThisAddIn_Shutdown() được tạo tự động này có ngôn ngữ đáng sợ nhưng nó vẫn được nêu ra trong trường hợp cụ thể này. –