![]() |
|
C# and New Inspector event
I figured it out using the code I provided. It is necessary to make the .net
class libary com visible. After adding [assembly: ComVisible(true)] to AssemblyInfo.cs, the NewInspector event gets caught correctly. Thanks for your input. Benjamin Strum ThinkTron Corporation "Dmitry Streblechenko" wrote: As long as you arae developing on an Outlook 2000 machine where the interop is built, you shoudld be Ok. As long as your addin is running under teh version of fOutlook equal to or greater thaan thee one you used to create the PIA, your add-in will load just fine. If you do not add a PIA, your only options is doing the raw COM events using IConnectionPointContainer, IConnectionPoint, etc. Dmitry Streblechenko (MVP) http://www.dimastr.com/ OutlookSpy - Outlook, CDO and MAPI Developer Tool "bstrum" wrote in message ... Do I need to add a reference to the 2000 PIA? If so, then my installer will include it, right? We had problems in the early release of our addin when including any of the PIAs because the addin would just not load correctly on certain office versions. This was extremely difficult to debug and I would rather not compromise all the work we have done to solve the load issues. If I do not need to include the PIA / add a reference, is there a way to generate my own c# wrapper for this specific event? Thank you, Benjamin Strum ThinkTron Corp. "Dmitry Streblechenko" wrote: Again, *why* do you need to do that from the scratch? Create an interop using the lowest version of Outlook that you are planning to support (Outlook 2000?); then you will need to use late binding only for the features not supported by that version. Otherwise C# is not the best tool for the task i am afraid. Dmitry Streblechenko (MVP) http://www.dimastr.com/ OutlookSpy - Outlook, CDO and MAPI Developer Tool "bstrum" wrote in message ... Does anyone know how to do this? We have spent a lot of time making our code version independent using late binding. We now need to be able to hook into the newinspector event. Here is some more code that I am trying. Right now, it throws an InvalidCast exception on m_oConnectionPoint.Advise(this, out m_Cookie). using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.InteropServices.ComTypes; using ThinkTron.Email.Common; using MO = ManagedOffice; using MSWord = ManagedOffice.Word; using MSOutlook = ManagedOffice.Outlook; namespace SSNProtector { [InterfaceType(ComInterfaceType.InterfaceIsIDispatc h), GuidAttribute("00063079-0000-0000-c000-000000000046")] public interface DInspectorEvents { void NewInspector([MarshalAs(UnmanagedType.Struct)]object NewInspector); } class InspectorEventHelper : IDisposable, DInspectorEvents { public InspectorEventHelper() { m_oConnectionPoint = null; m_Cookie = 0; } private IConnectionPoint m_oConnectionPoint; private int m_Cookie; public void SetupConnection(object Inspectors) { if (m_Cookie != 0) return; try { Guid guid = new Guid("{00063079-0000-0000-c000-000000000046}"); IConnectionPointContainer oCPP = (IConnectionPointContainer)Inspectors; oCPP.FindConnectionPoint(ref guid, out m_oConnectionPoint); m_oConnectionPoint.Advise(this, out m_Cookie); } catch (Exception exc) { Log.Write(exc.Message); } } public void RemoveConnection() { if (m_Cookie != 0) { m_oConnectionPoint.Unadvise(m_Cookie); m_oConnectionPoint = null; m_Cookie = 0; } } #region IDisposable Members public void Dispose() { RemoveConnection(); } #endregion //#region DOutlookApplicationEvents_10 Members [DispId(0xF001)] public void NewInspector([MarshalAs(UnmanagedType.Struct)]object NewInspector) { } } } "Dmitry Streblechenko" wrote: But it still requires an interop; the original question was about doing COM event sinking using the low level COM API (IConnectionPointContainer, IConnectionPoint, etc). But I can't imagine why the lowest Outlook version interop (2000?) cannot be used instead... Dmitry Streblechenko (MVP) http://www.dimastr.com/ OutlookSpy - Outlook, CDO and MAPI Developer Tool "Ken Slovak - [MVP - Outlook]" wrote in message ... Helmut Obertanner has an Inspector wrapper example in C# up on www.outlookcode.com. -- Ken Slovak [MVP - Outlook] http://www.slovaktech.com Author: Absolute Beginner's Guide to Microsoft Office Outlook 2003 Reminder Manager, Extended Reminders, Attachment Options http://www.slovaktech.com/products.htm "Dmitry Streblechenko" wrote in message ... I have no idea how to do that in C#, sorry. Dmitry Streblechenko (MVP) http://www.dimastr.com/ OutlookSpy - Outlook, CDO and MAPI Developer Tool |
All times are GMT +1. The time now is 09:28 AM. |
|
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 2.4.0
Copyright ©2004-2006 OutlookBanter.com