ESEMPIO: Comaddin.exe Office 2000 componente aggiuntivo COM scritto in Visual c ++

Traduzione articoli Traduzione articoli
Identificativo articolo: 230689 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

Comaddin.exe Ŕ un file eseguibile autoestraente che spiega come generare un componente aggiuntivo COM (Component Object Model) per Office 2000 o Office XP utilizzando il linguaggio Visual C++. Un componente aggiuntivo COM Ŕ un server COM in-process progettato in modo specifico per essere eseguito nel contesto di una o pi¨ applicazioni di Office 2000 o Office XP. I componenti aggiuntivi COM consentono di estendere l'ambiente Office in modo flessibile, efficiente e uniforme.

I componenti aggiuntivi COM sono generati tramite qualsiasi linguaggio di programmazione in grado di creare componenti COM, come Visual Basic, C/C++, C# e le edizioni Office 2000 Developer o Office XP Developer di Microsoft Visual Basic Applications Edition (VBA).

Il file di esempio descritto in questo articolo spiega la procedura necessaria per generare un componente aggiuntivo COM in Visual C++. Crea una semplice shell di componente aggiuntivo che Ŕ possibile ampliare per generare un componente aggiuntivo di Office personalizzato.

Informazioni

Il seguente file Ŕ disponibile per il download dall'Area download Microsoft:
Comaddin.exe
Data di rilascio: 4 gennaio 1999

Per ulteriori informazioni su come scaricare file di supporto Microsoft, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
119591Come ottenere file di supporto Microsoft dai servizi online
Microsoft analizzati questo file per individuare eventuali virus. Microsoft ha utilizzato il software antivirus pi¨ recente disponibile alla data di pubblicazione del file. Il file Ŕ archiviato in server con protezione avanzata per impedire modifiche non autorizzate al file.

Informazioni sul file di esempio

Comaddin.exe estrae i file seguenti in una cartella di propria scelta:
   FileName                    Size
   ----------------------------------------
   
   TestAddin.dsw               541 bytes
   TestAddin.dsp               4.11 KB 
   ComAddin.h                  6.19 KB
   ComAddin.cpp                8.38 KB
   ComAddin.def                205 bytes
   MyAddin.cpp                 10.6 KB
   MyAddinCF.cpp               2.18 KB
   BttnHandler.cpp             6.27 KB

IDTExensibility2

PerchÚ un oggetto COM possa essere un componente aggiuntivo di Office, deve supportare l'interfaccia IDTExensibility2 in base a quanto descritto nella libreria di tipi Progettazione componenti aggiuntivi Microsoft (Msaddndr.dll). L'interfaccia Ŕ giÓ stata dichiarata in ComAddin.h quindi non Ŕ necessario eseguire alcuna importazione. Tutti i componenti aggiuntivi COM ereditano proprietÓ da tale interfaccia e devono implementarne i relativi cinque metodi:
  • OnConnection
  • OnDisconnection
  • OnAddInsUpdate
  • OnStartupComplete
  • OnBeginShutdown
Quando un componente aggiuntivo COM viene caricato per la prima volta, viene eseguita una chiamata QueryInterface per IDTExtensibility2. Se la chiamata non va a buon fine, il componente aggiuntivo non viene caricato. Se la chiamata va a buon fine, l'applicazione host utilizza il riferimento restituito per segnalare al componente aggiuntivo le modifiche apportate al proprio stato. Segue la descrizione di ciascun metodo.

OnConnection

L'evento OnConnection viene generato ogni volta che il componente aggiuntivo COM Ŕ connesso. Il componente aggiuntivo pu˛ essere connesso all'avvio, dall'utente finale oppure attraverso l'automazione. Se OnConnection restituisce S_OK, il componente aggiuntivo viene considerato caricato. Se viene restituito qualsiasi altro valore, l'applicazione host rilascia immediatamente il proprio riferimento al componente aggiuntivo e l'oggetto viene distrutto.

OnConnection accetta i seguenti quattro parametri:
  • Application - riferimento all'interfaccia IDispatch dell'applicazione host.
  • ConnectMode - Costante che specifica la modalitÓ di connessione del componente aggiuntivo.
    • ext_cm_AfterStartup ? avviato dall'utente finale dalla finestra di dialogo COM aggiuntivi del componente.
    • ext_cm_CommandLine - Connesso dalla riga di comando.
    • ext_cm_External - Connesso da un'applicazione esterna tramite l'automazione.
    • ext_cm_Startup - avviato dall'host all'avvio dell'applicazione. Questo comportamento pu˛ essere controllato da un'impostazione del Registro di sistema.
  • AddInInst - Riferimento all'oggetto COMAddIn che fa riferimento al componente aggiuntivo nell'insieme COMAddIns relativo all'applicazione host.
  • Custom - Matrice di varianti che pu˛ contenere dati definiti dall'utente.


OnDisconnection

L'evento OnDisconnection viene generato quando il componente aggiuntivo viene disconnesso e appena prima che Scarica dalla memoria. Il componente aggiuntivo dovrebbe eseguire un eventuale rilascio delle risorse in questo evento e ripristinare eventuali modifiche apportate all'applicazione host.

OnDisconnection accetta i seguenti due parametri:
  • RemoveMode - Costante che specifica la modalitÓ di disconnessione del componente aggiuntivo.
    • ext_dm_HostShutdown - Disconnesso alla chiusura dell'applicazione host.
    • ext_dm_UserClosed - Disconnesso dall'utente finale o da un controller di automazione.
  • Custom - Matrice di varianti che pu˛ contenere dati definiti dall'utente.


OnAddInsUpdate

L'evento di OnAddInsUpdate viene generato quando cambia il set di componenti aggiuntivi di COM registrati. In altre parole, ogni volta che un componente aggiuntivo COM viene installato o rimosso dall'applicazione host, viene generato un evento OnAddInsUpdate.


OnStartupComplete e OnBeginShutdown

Gli eventi OnStartupComplete e OnBeginShutdown segnalano al componente aggiuntivo il momento in cui l'applicazione host ha lasciato oppure sta entrando in uno stato in cui l'intervento dell'utente va evitato perchÚ l'applicazione Ŕ impegnata in operazioni di caricamento o scaricamento dalla memoria. L'evento OnStartupComplete viene generato solo se la connessione del componente aggiuntivo Ŕ avvenuta durante l'avvio e l'evento OnBeginShutdown viene generato solo se la disconnessione Ŕ stata eseguita dall'host durante l'arresto.

PoichÚ l'interfaccia utente per l'applicazione host Ŕ pienamente attiva quando vengono generati questi eventi, questi potrebbero rappresentare l'unico modo per eseguire determinate azioni che altrimenti risulterebbero non disponibili da OnConnection e OnDisconnection.

Registrazione del componente aggiuntivo COM

Oltre alla normale registrazione COM, Ŕ necessario che un componente aggiuntivo COM si registri con tutte le applicazioni di Office 2000 in cui viene eseguito. Per registrarsi con una determinata applicazione, il componente aggiuntivo crea una sottochiave, utilizzando il proprio ProgID come nome per la chiave, nella seguente posizione:

HKEY_CURRENT_USER\Software\Microsoft\Office\<appname>\Addins\<addinprogid>
In questa posizione il componente aggiuntivo pu˛ specificare i valori sia per il nome descrittivo visualizzato che per la descrizione completa. Il componente aggiuntivo dovrebbe inoltre specificare un comportamento di caricamento preferito utilizzando un valore DWORD denominato "LoadBehavior" Questo valore determina come il componente aggiuntivo verrÓ caricato dall'applicazione host ed Ŕ costituito da una combinazione dei valori seguenti:
  • 0x00 = Disconnect - Non viene caricato.
  • 0x01 = Connected - Viene caricato.
  • 0x02 = Bootload - Viene caricato all'avvio dell'applicazione.
  • 0x08 = DemandLoad - Viene caricato solo se richiesto dall'utente.
  • 0x16 = ConnectFirstTime - Viene caricato solo una volta (all'avvio successivo).
Il valore che viene generalmente specificato Ŕ 0x03 (Connected | Bootload).

I componenti aggiuntivi che implementano IDTExtensibility2 devono inoltre specificare un valore DWORD denominato "CommandLineSafe" per indicare se possono eseguire senza problemi operazioni che non supportano un'interfaccia utente. Il valore 0x00 significa False, 0x01 significa True. Dal momento che con questo file di esempio viene visualizzato un messaggio, non Ŕ indicato per l'esecuzione dalla riga di comando, di conseguenza imposta il valore su 0x00.

Guida introduttiva

Per iniziare a scrivere componenti aggiuntivi, compilare il progetto di esempio, eseguire regsvr32.exe sulla DLL generata e avviare Microsoft Word, Excel, Powerpoint e/o Frontpage 2000. Durante l'avvio del componente aggiuntivo verrÓ visualizzata una finestra di dialogo in cui si comunica il nome dell'applicazione aperta.

(c) 1999 Microsoft Corporation, tutti i diritti riservati. Con il contributo di Richard R. Taylor, Microsoft Corporation.

ProprietÓ

Identificativo articolo: 230689 - Ultima modifica: lunedý 9 agosto 2004 - Revisione: 5.4
Le informazioni in questo articolo si applicano a:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 6.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • Microsoft Office XP Developer Edition
  • Microsoft Office 2000 Developer Edition
  • Microsoft FrontPage 2002 Standard Edition
  • Microsoft FrontPage 2000 Standard Edition
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Outlook 2000 Standard Edition
  • Microsoft Outlook 2002 Standard Edition
Chiavi:á
kbmt kbdownload kbautomation kbfile kbinfo kbsample KB230689 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 230689
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com