Condividi tramite


Esempio INPROC: dimostrazione di un'applicazione server di automazione in-process

Aggiornamento: novembre 2007

L'esempio INPROC rappresenta un server di automazione in-process (precedentemente noto come automazione OLE). A differenza degli altri esempi di server di automazione MFC, l'applicazione INPROC può essere caricata come DLL nello spazio degli indirizzi del client. Generalmente i server in-process sono più efficienti dei server implementati come eseguibili (EXE) separati, in quanto non è necessaria alcuna chiamata a procedura remota (RPC, Remote Procedure Call) per richiamare i metodi sugli oggetti implementati dal server.

Nota:

Alcuni esempi, tra cui il presente, non sono stati cambiati per riflettere le modifiche apportate alle procedure guidate, alle librerie e al compilatore di Visual C++, tuttavia forniscono comunque le istruzioni per completare l'attività desiderata.

Nota sulla sicurezza:

Questo esempio di codice viene fornito solo a scopo dimostrativo e non deve essere utilizzato in applicazioni o siti Web, poiché potrebbe non implementare le tecniche migliori a livello di sicurezza. Microsoft esclude ogni responsabilità per danni diretti o indiretti derivanti dall'utilizzo dell'esempio di codice per scopi diversi da quelli previsti.

Per ottenere gli esempi e le istruzioni per l'installazione:

  • In Visual Studio scegliere Esempi dal menu ?.

    Per ulteriori informazioni, vedere Individuazione dei file di esempio.

  • La versione più recente e l'elenco completo degli esempi sono disponibili in linea alla pagina Visual Studio 2008 Samples.

  • È anche possibile trovare gli esempi sul disco rigido del computer. Per impostazione predefinita, gli esempi e il file Leggimi vengono copiati in una cartella nel percorso \Programmi\Visual Studio 9.0\Samples\. Per le versioni Express di Visual Studio, tutti gli esempi sono disponibili in linea.

Generazione ed esecuzione dell'esempio

Per generare ed eseguire l'esempio INPROC

  1. Aprire la soluzione inproc.sln.

  2. Scegliere Genera dal menu Genera.

  3. Registrare la DLL di INPROC mediante il file REG del progetto. In altre parole, eseguire regedit INPROC.REG o utilizzare REGSVR dall'esempio REGSVR.

    Se si sceglie di utilizzare REGEDIT, verificare che Inproc.dll si trovi nel percorso di sistema. In alternativa, è possibile modificare il file REG in modo che faccia riferimento al percorso di Inproc.dll in modo esplicito.

    A differenza dei file eseguibili, le DLL non possono essere eseguite in modo autonomo. Per eseguire il test di INPROC, quindi, è necessario controllarla da un'applicazione client. INPROC può essere controllata sia da Visual Basic che da Visual C++. Per ulteriori informazioni su come controllare INPROC da Visual C++, vedere l'esempio IPDRIVE.

    Nota:

    È possibile generare INPROC come eseguibile (EXE) o come DLL. La variante eseguibile deve essere definita nelle impostazioni di progetto dell'esempio e può essere registrata solo nel Registro di sistema di Windows.

Classi INPROC

La classe CVariantMap implementa una mappa da VARIANT a VARIANT. In tal modo, qualsiasi VARIANT può essere mappata a qualsiasi altra VARIANT. Sebbene questa soluzione non risulti particolarmente utile per i programmatori in Visual C++, che preferiranno utilizzare direttamente CMap, offre le funzionalità avanzate delle classi Collection di MFC agli utenti di Visual Basic. Alla classe CVariantMap si accede mediante il nome mfc.inproc.varmap. Di seguito è riportata la procedura con cui l'oggetto viene registrato nel Registro di sistema di Windows. CVariantMap implementa i metodi e le proprietà di insieme standard e il metodo _NewEnum.

La classe CStringCollect implementa una matrice di stringhe. Questa implementazione è più semplice di quella della classe CVariantMap, sebbene vengano implementate gran parte delle funzionalità di automazione utilizzate in CVariantMap. All'oggetto CStringCollect si accede mediante il nome mfc.inproc.strcoll. Esso implementa la maggior parte dei metodi e delle proprietà di insieme standard e rappresenta un buon esempio di come implementare i propri insiemi. Particolarmente interessante è l'implementazione del metodo _NewEnum, che consente agli utenti di Visual Basic di utilizzare la sintassi For Each... In quando enumerano il contenuto di un insieme. CStringCollect utilizza CEnumVariant per implementare questa funzionalità: l'implementazione di IEnumVARIANT viene eseguita utilizzando le mappe di interfaccia di MFC. CEnumVariant può risultare molto utile nelle applicazioni personalizzate.

Infine, nell'esempio vengono dimostrate alcune proprietà fittizie, utilizzate semplicemente per mettere a confronto le prestazioni dei server in-process con quelle dei server LocalServer. Il test di queste proprietà viene eseguito dai pulsanti Test1 e Test2 di IPDRIVE.

Parole chiave

Nell'esempio vengono illustrate le seguenti parole chiave:

AfxIsValidAddress; AfxMessageBox; AfxOleInit; AfxOleLockApp; AfxOleUnlockApp; AfxThrowMemoryException; AfxThrowOleException; CCmdTarget::EnableAutomation; CCmdTarget::GetIDispatch; CCmdTarget::OnFinalRelease; CString::AllocSysString; CWinApp::InitInstance; CWinApp::RunAutomated; CWinApp::RunEmbedded; DllCanUnloadNow; DllGetClassObject; min

Vedere anche

Altre risorse

Esempi relativi ad MFC