Mega Code Archive

 
Categories / Delphi / Activex OLE
 

How to write an Outlook AddIn

Title: How to write an Outlook AddIn Create an ActiveX-Library Save the project as e.g. "OLAddIn.dpr" Create an automation object Call the CoClass e.g. "AddIn" Save the Unit as "AddIn.pas" - procedure OnConnection(const Application: IDispatch; ConnectMode: ext_ConnectMode; const AddInInst: IDispatch; var custom: PSafeArray); safecall; - procedure OnDisconnection(RemoveMode: ext_DisconnectMode; var custom: PSafeArray); safecall; - procedure OnAddInsUpdate(var custom: PSafeArray); safecall; - procedure OnStartupComplete(var custom: PSafeArray); safecall; - procedure OnBeginShutdown(var custom: PSafeArray); safecall; Register the COM-object with "run / register ActiveX Server" Register the AddIn, so that the Addin will be recognized by Outlook - Create a new key: HKEY_CURRENT_USER\Software\Microsoft\Office\Outlook\Addins\OLAddIn.AddIn - create a DWOrd "LoadBehavior" with the value 3 Compile the AddIn Start Outllok Sourcecode library OLAddIn; uses ComServ, OLAddIn_TLB in 'OLAddIn_TLB.pas', AddIn in 'AddIn.pas' {AddIn: CoClass}; exports DllGetClassObject, DllCanUnloadNow, DllRegisterServer, DllUnregisterServer; {$R *.TLB} {$R *.RES} begin end. unit AddIn; {$WARN SYMBOL_PLATFORM OFF} interface uses ComObj, ActiveX, OLAddIn_TLB, StdVcl, AddinDesignerObjects_TLB, Outlook_TLB; type TAddIn = class(TAutoObject, IAddIn, IDTExtensibility2) protected { Protected declarations } procedure OnConnection(const Application: IDispatch; ConnectMode: ext_ConnectMode; const AddInInst: IDispatch; var custom: PSafeArray); safecall; procedure OnDisconnection(RemoveMode: ext_DisconnectMode; var custom: PSafeArray); safecall; procedure OnAddInsUpdate(var custom: PSafeArray); safecall; procedure OnStartupComplete(var custom: PSafeArray); safecall; procedure OnBeginShutdown(var custom: PSafeArray); safecall; end; implementation uses ComServ, Dialogs; { TAddIn } procedure TAddIn.OnAddInsUpdate(var custom: PSafeArray); begin end; procedure TAddIn.OnBeginShutdown(var custom: PSafeArray); begin end; procedure TAddIn.OnConnection(const Application: IDispatch; ConnectMode: ext_ConnectMode; const AddInInst: IDispatch; var custom: PSafeArray); begin // To show, that the AddIn has started just say anything ShowMessage('Das AddIn wurde gestartet'); end; procedure TAddIn.OnDisconnection(RemoveMode: ext_DisconnectMode; var custom: PSafeArray); begin end; procedure TAddIn.OnStartupComplete(var custom: PSafeArray); begin end; initialization TAutoObjectFactory.Create(ComServer, TAddIn, Class_AddIn, ciMultiInstance, tmApartment); end.