Registrazione

Quando un utente desidera inserire un elemento OLE in un'applicazione, OLE presenta un elenco di tipi di oggetto tra cui scegliere. OLE ottiene questo elenco dal database di registrazione del sistema, che contiene informazioni fornite da tutte le applicazioni server. Quando un server si registra, le voci inserite nel database di registrazione del sistema (registro) descrivono ogni tipo di oggetto fornito, estensioni di file e il percorso verso se stesso, tra le altre informazioni.

Il framework e le librerie a collegamento dinamico del sistema OLE (DLL) usano questo Registro di sistema per determinare quali tipi di elementi OLE sono disponibili nel sistema. Le DLL di sistema OLE utilizzano anche questo Registro di sistema per determinare come avviare un'applicazione server quando viene attivato un oggetto collegato o incorporato.

Questo articolo descrive le operazioni che ogni applicazione server deve eseguire quando viene installata e ogni volta che viene eseguita.

Per informazioni dettagliate sul database di registrazione del sistema e sul formato dei file reg usati per aggiornarlo, vedere le informazioni di riferimento sul programmatore OLE.

Installazione del server

Quando si installa l'applicazione server per la prima volta, deve registrare tutti i tipi di elementi OLE supportati. È anche possibile che il server aggiorni il database di registrazione del sistema ogni volta che viene eseguito come applicazione autonoma. In questo modo il database di registrazione viene aggiornato se il file eseguibile del server viene spostato.

Nota

Le applicazioni MFC generate dalla procedura guidata dell'applicazione si registrano automaticamente quando vengono eseguite come applicazioni autonome.

Se si vuole registrare l'applicazione durante l'installazione, usare il programma RegEdit.exe. Se si include un programma di installazione con l'applicazione, eseguire il programma di installazione "RegEdit /S appname.reg". Il flag /S indica l'operazione invisibile all'utente, ovvero non visualizza la finestra di dialogo che segnala il completamento corretto del comando. In caso contrario, indicare all'utente di eseguire RegEdit manualmente.

Nota

Il file con estensione reg creato dalla procedura guidata dell'applicazione non include il percorso completo per l'eseguibile. Il programma di installazione deve modificare il file reg per includere il percorso completo dell'eseguibile o modificare la variabile di ambiente PATH per includere la directory di installazione.

RegEdit unisce il contenuto del file di testo reg nel database di registrazione. Per verificare il database o ripristinarlo, usare l'editor del Registro di sistema. Prestare attenzione a evitare di eliminare voci OLE essenziali.

Inizializzazione del server

Quando si crea un'applicazione server con la procedura guidata dell'applicazione, la procedura guidata completa automaticamente tutte le attività di inizializzazione. Questa sezione descrive le operazioni da eseguire se si scrive un'applicazione server manualmente.

Quando un'applicazione server viene avviata da un'applicazione contenitore, le DLL di sistema OLE aggiungono l'opzione "/Embedding" alla riga di comando del server. Il comportamento di un'applicazione server varia a seconda che sia stato avviato da un contenitore, quindi la prima operazione che un'applicazione deve eseguire quando inizia l'esecuzione è verificare la presenza dell'opzione "/Embedding" o "-Embedding" nella riga di comando. Se questa opzione esiste, caricare un set diverso di risorse che mostrano il server come attivo sul posto o completamente aperto. Per altre informazioni, vedere Menu e risorse: Aggiunte server.

L'applicazione server deve anche chiamare la funzione CWinApp::RunEmbedded per analizzare la riga di comando. Se restituisce un valore diverso da zero, l'applicazione non deve visualizzare la finestra perché è stata eseguita da un'applicazione contenitore, non come applicazione autonoma. Questa funzione aggiorna la voce del server nel database di registrazione del sistema e chiama automaticamente la funzione membro, eseguendo la RegisterAll registrazione dell'istanza.

Quando l'applicazione server viene avviata, è necessario assicurarsi che possa eseguire la registrazione dell'istanza. La registrazione dell'istanza informa le DLL di sistema OLE che il server è attivo e pronto a ricevere richieste dai contenitori. Non aggiunge una voce al database di registrazione. Eseguire la registrazione dell'istanza del server chiamando la ConnectTemplate funzione membro definita da COleTemplateServer. In questo modo l'oggetto CDocTemplate viene connesso all'oggetto COleTemplateServer .

La ConnectTemplate funzione accetta tre parametri: CLSID del server, un puntatore all'oggetto CDocTemplate e un flag che indica se il server supporta più istanze. Un miniserver deve essere in grado di supportare più istanze, ovvero deve essere possibile che più istanze del server vengano eseguite contemporaneamente, una per ogni contenitore. Di conseguenza, passare TRUE per questo flag all'avvio di un miniserver.

Se si scrive un miniserver, per definizione verrà sempre avviato da un contenitore. È comunque necessario analizzare la riga di comando per verificare la presenza dell'opzione "/Embedding". L'assenza di questa opzione nella riga di comando indica che l'utente ha tentato di avviare il miniserver come applicazione autonoma. In questo caso, registrare il server con il database di registrazione del sistema e quindi visualizzare una finestra di messaggio che informa l'utente di avviare il miniserver da un'applicazione contenitore.

Vedi anche

OLE
Server
CWinApp::RunAutomated
CWinApp::RunEmbedded
Classe COleTemplateServer