Al momento sei offline in attesa che la connessione Internet venga ristabilita

How to Creare un progetto di automazione mediante MFC e una libreria di tipi

Questo articolo è stato precedentemente pubblicato con il codice di riferimento I178749
Questo articolo è stato archiviato. L’articolo, quindi, viene offerto “così come è” e non verrà più aggiornato.
Sommario
In questo articolo viene spiegato in modo dettagliato come automatizzare l'integrazione dei componenti con applicazioni COM compatibili come le applicazioni di Microsoft Office.
Informazioni
La sezione riportata di seguito descrive come è possibile creare un progetto MFC. L'esempio consente di automatizzare Microsoft Excel. È possibile utilizzare i primi otto passaggi per qualsiasi progetto e modificare i passaggi da 9 a 15 quando si utilizza un'altra applicazione.

Creazione di un progetto di automazione

  1. In Microsoft Developer Studio avviare un nuovo progetto "MFC AppWizard (exe)" denominato "AutoProject".
  2. Nel passaggio 1 di AppWizard di MFC scegliere "Basato su una finestra di dialogo" per il tipo di applicazione, quindi scegliere Fine.

    Verrà visualizzata la finestra di dialogo relativa alle informazioni sul nuovo progetto che indicherà che tra le classi da creare sono incluse:
          Application: CAutoProjectApp in AutoProject.h and AutoProject.cpp      Dialog: CAutoProjectDlg in AutoProject.h and AutoProjectDlg.cpp
    Scegliere OK per creare il progetto.
  3. Verrà visualizzata la finestra di dialogo "IDD_AUTOPROJECT_DIALOG" nell'area di progettazione/modifica di Visual Studio. Modificare la finestra in base alle istruzioni riportate nei due passaggi seguenti.
  4. Rimuovere il controllo etichetta (IDC_STATIC) e il pulsante di annullamento (IDCANCEL).
  5. Modificare il nome del pulsante OK in "IDRUN" e il titolo in "Run". Chiudere la maschera di progettazione della finestra di dialogo AutoProject.rc.
  6. Scegliere la creazione guidata classe dal menu Visualizza oppure premere CTRL+W.
  7. Scegliere la scheda Mappe messaggi. Selezionare IDRUN nella casella di riepilogo relativa agli ID oggetto e "BN_CLICKED" nella casella di riepilogo dei messaggi. Fare clic su Aggiungi funzione e accettare il nome di funzione "OnRun". Scegliere OK per chiudere la creazione guidata classe.

    NOTA: questo passaggio consente di aggiungere una dichiarazione per il membro di funzione "OnRun();" al file di intestazione denominato AutoProjectDLG.h. Viene inoltre aggiunta una funzione di gestione dei messaggi di base vuota denominata CAutoProjectDlg::OnRun() al file denominato AutoProjectDLG.cpp.
  8. Scegliere la creazione guidata classe dal menu Visualizza oppure premere CTRL+W.
  9. Scegliere la scheda Automazione. Fare clic su Aggiungi classe e scegliere l'opzione relativa alla libreria di tipi. Selezionare la libreria di oggetti per l'applicazione che si desidera automatizzare. Se ad esempio si desidera automatizzare Excel 97, selezionare la libreria di oggetti di Microsoft Excel 8.0, il cui percorso predefinito è C:\Programmi\Microsoft Office\Office\Excel8.olb.

    Se si desidera automatizzare Microsoft Excel 2000, selezionare la libreria di oggetti di Microsoft Excel 9.0, il cui percorso predefinito è C:\Programmi\Microsoft Office\Office\Excel9.olb.

    Se si desidera automatizzare Microsoft Excel 2002 e Microsoft Office Excel 2003, la libreria di oggetti risulterà incorporata nel file Excel.exe. Il percorso predefinito di Excel.exe in Office 2002 è C:\Programmi\Microsoft Office\Office10\Excel.exe. Il percorso predefinito di Excel.exe in Office 2003 è C:\Programmi\Microsoft Office\Office11\Excel.exe. Dopo avere selezionato la libreria di tipi appropriata, scegliere Apri. Selezionare tutte le classi dell'elenco di conferma delle classi e scegliere OK.

    NOTA: la casella di riepilogo della finestra di dialogo di conferma delle classi contiene tutte le interfacce IDispatch (praticamente identiche alle classi) della libreria di tipi di Microsoft Excel. Nella parte inferiore della finestra di dialogo è disponibile un file di implementazione denominato Excel8.cpp che contiene wrapper di classi generate derivati da ColeDispatchDriver() e il file di intestazione della dichiarazione appropriato è denominato Excel8.h. Per Excel 2002 ed Excel 2003 i file sono denominati Excel.cpp ed Excel.h.
  10. Scegliere OK per chiudere la finestra di dialogo relativa alla creazione guidata classe di MFC.
  11. Aggiungere il codice riportato di seguito alla funzione CAutoProjectApp::InitInstance(), operazione che consente di caricare e abilitare la libreria dei servizi COM:
          BOOL CAutoProjectApp::InitInstance()      {         if(!AfxOleInit())  // Your addition starts here         {            AfxMessageBox("Could not initialize COM dll");            return FALSE;         }                 // End of your addition         AfxEnableControlContainer();      .      .      .      }
  12. Aggiungere la riga di codice riportata di seguito alle istruzioni #include nella parte superiore del file di programma AutoProject.cpp:
          #include <afxdisp.h>
  13. Aggiungere l'istruzione include per excel8.h dopo l'istruzione include di stdafx.h nella parte superiore del file di programma AutoProjectDlg.cpp:
          #include "stdafx.h"      #include "excel8.h" // excel.h in the case of Excel 2002 and Excel 2003.
  14. Aggiungere il codice di automazione alla funzione CAutoProjectDlg::OnRun() affinché sia simile a quanto riportato di seguito:
          void CAutoProjectDlg::OnRun()      {          _Application app;  // app is the Excel _Application object          // Start Excel and get Application object...         if(!app.CreateDispatch("Excel.Application"))         {            AfxMessageBox("Couldn't start Excel.");         }         else         {            //Make Excel Visible and display a message          app.SetVisible(TRUE);          AfxMessageBox ("Excel is Running!");         }      }
  15. Compilare ed eseguire il progetto. RISULTATI: quando si fa clic sul pulsante di esecuzione nella finestra di dialogo verrà avviato Microsoft Excel. Attivare la finestra di dialogo Auto_Excel e annullare la visualizzazione della finestra del messaggio. La chiusura di Microsoft Excel avverrà al termine della funzione CAutoProjectDlg::OnRun(), perché la variabile dell'applicazione non rientrerà più nell'ambito.

Note aggiuntive

Dopo avere aggiunto al progetto le classi provenienti da una libreria di tipi, come è avvenuto nel passaggio 9, si noterà che sono state aggiunte molte classi. Nella visualizzazione delle classi è possibile fare doppio clic su una classe per visualizzare le funzioni membro e doppio clic sulla funzione membro per visualizzare la definizione di tale funzione nel file di implementazione Excel8.cpp.

Occorre visualizzare la definizione di una funzione membro se si desidera verificare un tipo restituito o se è necessario modificare l'implementazione di una funzione. Ogni volta che si modifica una definizione della funzione, è importante ricordare di modificare la dichiarazione nel file Excel8.h. Quando si effettua questa operazione, occorre accertarsi di modificare la dichiarazione di funzione corretta. Talvolta lo stesso nome viene assegnato a funzioni membro di più classi, ad esempio GetApplication().

La procedura sopra illustrata dimostra che è possibile automatizzare Microsoft Excel, ma può essere applicata per automatizzare anche altre applicazioni. Nell'elenco seguente sono citati i nomi di file delle librerie di tipi delle applicazioni di Microsoft Office:
   Applicazione                          Libreria tipi   --------------------------------------------------   Microsoft Access 97                   Msacc8.olb   Microsoft Jet Database 3.5            DAO350.dll   Microsoft Binder 97                   Msbdr8.olb   Microsoft Excel 97                    Excel8.olb   Microsoft Graph 97                    Graph8.olb   Microsoft Office 97                   Mso97.dll   Microsoft Outlook 97                  Msoutl97.olb   Microsoft PowerPoint 97               Msppt8.olb   Microsoft Word 97                     Msword8.olb   Microsoft Access 2000                 Msacc9.olb   Microsoft Jet Database 3.51           DAO360.dll   Microsoft Binder 2000                 Msbdr9.olb   Microsoft Excel 2000                  Excel9.olb   Microsoft Graph 2000                  Graph9.olb   Microsoft Office 2000                 Mso9.dll   Microsoft Outlook 2000                Msoutl9.olb   Microsoft PowerPoint 2000             Msppt9.olb   Microsoft Word 2000                   Msword9.olb   Microsoft Access 2002                 Msacc.olb   Microsoft Excel 2002                  Excel.exe   Microsoft Graph 2002                  Graph.exe   Microsoft Office 2002                 MSO.dll   Microsoft Outlook 2002                MSOutl.olb   Microsoft PowerPoint 2002             MSPpt.olb   Microsoft Word 2002                   MSWord.olb   Microsoft Access 2003                 Msacc.olb   Microsoft Excel 2003                  Excel.exe   Microsoft Graph 2003                  Graph.exe   Microsoft Office 2003                 MSO.dll   Microsoft Outlook 2003                MSOutl.olb   Microsoft PowerPoint 2003             MSPpt.olb   Microsoft Word 2003                   MSWord.olb
NOTA: il percorso predefinito di queste librerie dei tipi è C:\Programmi\Microsoft Office\Office (per Office 2002 il percorso è C:\...\Office10 e per Office 2003 il percorso C:\...\Office11), ad eccezione di Dao350.dll o Dao360.dll e Microsoft Office 10(MSO.dll). Il percorso predefinito per Dao350.dll/Dao360.dll è C:\Programmi\File comuni\Microsoft Shared\Dao. Il percorso predefinito per MSO.dll è C:\Programmi\File comuni\Microsoft Shared\Office10 per Office 2002 e C:\Programmi\File comuni\Microsoft Shared\Office11 per Office 2003.
Riferimenti
Questo articolo presenta un approccio specifico per la creazione di un progetto relativo a una finestra di dialogo. Se si desidera utilizzare una documentazione più generale relativa al processo di creazione di un progetto VC++ in ambiente Microsoft Developer Studio, è disponibile un'ottima esercitazione a cui si può accedere tramite InfoViewer di Visual Studio. Per accedere all'esercitazione, scegliere Cerca dal menu ?. Scegliere la scheda dell'indice e digitare quanto segue:
utilizzo di progetti
Fare clic su Elenca argomenti. Selezionare l'argomento relativo all'utilizzo dei progetti e fare clic su Visualizza. Per ulteriori informazioni sull'automazione delle applicazioni di Office, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito (il contenuto potrebbe essere in inglese):
222101 How to Trovare e utilizzare la documentazione sul modello di oggetti di Office
In alternativa, visitare il seguente sito Web Microsoft (informazioni in lingua inglese):
IDispatch ole automation listbox
Proprietà

ID articolo: 178749 - Ultima revisione: 12/05/2015 08:16:07 - Revisione: 5.1

  • Microsoft Foundation Class Library 4.2
  • Microsoft Office XP Developer Edition
  • Microsoft Office 2000 Developer Edition
  • kbnosurvey kbarchive kbhowto kbinterop kbautomation KB178749
Feedback