Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как написать Outlook AddIn?

01.01.2007
{ 
 
1.  Create an ActiveX-Library
 
Save the project as e.g. "OLAddIn.dpr"
 
 
2.Create an automation object
 
Call the CoClass e.g. "AddIn"
 
Save the Unit as "AddIn.pas"
 
 
3.  Add to the uses clause
 
- AddInDesignerObjects_TLB
 
- Outlook_TLB
 
}
 
-     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;
 
{
 
and complete the class by pressing Ctrl-Shft-C
 
 
4. Step
 
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
 
 
5.
 
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.

Взято с сайта https://www.swissdelphicenter.ch/en/tipsindex.php