Partager via


Inscription

Lorsqu’un utilisateur souhaite insérer un élément OLE dans une application, OLE présente une liste de types d’objets à choisir. OLE obtient cette liste à partir de la base de données d’inscription système, qui contient des informations fournies par toutes les applications serveur. Lorsqu’un serveur s’inscrit lui-même, les entrées qu’il place dans la base de données d’inscription système (le Registre) décrivent chaque type d’objet qu’il fournit, les extensions de fichier et le chemin d’accès à lui-même, entre autres informations.

L’infrastructure et les bibliothèques de liens dynamiques (DLL) du système OLE utilisent ce Registre pour déterminer les types d’éléments OLE disponibles sur le système. Les DLL système OLE utilisent également ce Registre pour déterminer comment lancer une application serveur lorsqu’un objet lié ou incorporé est activé.

Cet article décrit ce que chaque application serveur doit faire quand elle est installée et chaque fois qu’elle est exécutée.

Pour plus d’informations sur la base de données d’inscription système et le format des fichiers .reg utilisés pour la mettre à jour, consultez la référence du programmeur OLE.

Installation du serveur

Lorsque vous installez d’abord votre application serveur, il doit inscrire tous les types d’éléments OLE qu’il prend en charge. Vous pouvez également mettre à jour le serveur la base de données d’inscription système chaque fois qu’elle s’exécute en tant qu’application autonome. Cela conserve la base de données d’inscription up-to-date si le fichier exécutable du serveur est déplacé.

Remarque

Les applications MFC générées par l’Assistant Application s’inscrivent automatiquement lorsqu’elles sont exécutées en tant qu’applications autonomes.

Si vous souhaitez inscrire votre application pendant l’installation, utilisez le programme RegEdit.exe. Si vous incluez un programme d’installation avec votre application, exécutez le programme d’installation « RegEdit /S appname.reg ». (L’indicateur /S indique l’opération silencieuse, autrement dit, elle n’affiche pas la boîte de dialogue signalant la réussite de la commande.) Sinon, demandez à l’utilisateur d’exécuter RegEdit manuellement.

Remarque

Le fichier .reg créé par l’Assistant Application n’inclut pas le chemin d’accès complet de l’exécutable. Votre programme d’installation doit modifier le fichier .reg pour inclure le chemin d’accès complet à l’exécutable ou modifier la variable d’environnement PATH pour inclure le répertoire d’installation.

RegEdit fusionne le contenu du fichier texte .reg dans la base de données d’inscription. Pour vérifier la base de données ou la réparer, utilisez l’éditeur de Registre. Veillez à éviter de supprimer les entrées OLE essentielles.

Initialisation du serveur

Lorsque vous créez une application serveur avec l’Assistant Application, l’Assistant effectue toutes les tâches d’initialisation automatiquement. Cette section décrit ce que vous devez faire si vous écrivez une application serveur manuellement.

Lorsqu’une application serveur est lancée par une application conteneur, les DLL système OLE ajoutent l’option « /Embedding » à la ligne de commande du serveur. Le comportement d’une application serveur diffère selon qu’elle a été lancée par un conteneur. Par conséquent, la première chose qu’une application doit faire lorsqu’elle commence l’exécution est de vérifier l’option « /Embedding » ou « -Embedding » sur la ligne de commande. Si ce commutateur existe, chargez un autre ensemble de ressources qui indiquent au serveur qu’il est actif ou entièrement ouvert sur place. Pour plus d’informations, consultez Menus et ressources : Ajouts de serveur.

Votre application serveur doit également appeler sa CWinApp::RunEmbedded fonction pour analyser la ligne de commande. Si elle retourne une valeur différente de zéro, l’application ne doit pas afficher sa fenêtre, car elle a été exécutée à partir d’une application conteneur, et non en tant qu’application autonome. Cette fonction met à jour l’entrée du serveur dans la base de données d’inscription système et appelle la RegisterAll fonction membre pour vous, effectuant l’inscription d’instance.

Lorsque votre application serveur démarre, vous devez vous assurer qu’elle peut effectuer l’inscription d’instance. L’inscription d’instance informe les DLL système OLE que le serveur est actif et prêt à recevoir des demandes de conteneurs. Il n’ajoute pas d’entrée à la base de données d’inscription. Effectuez l’inscription d’instance du serveur en appelant la ConnectTemplate fonction membre définie par COleTemplateServer. Cela connecte l’objet CDocTemplate à l’objet COleTemplateServer .

La ConnectTemplate fonction prend trois paramètres : le CLSID du serveur, un pointeur vers l’objet CDocTemplate et un indicateur indiquant si le serveur prend en charge plusieurs instances. Un miniserveur doit être en mesure de prendre en charge plusieurs instances, autrement dit, il doit être possible que plusieurs instances du serveur s’exécutent simultanément, une pour chaque conteneur. Par conséquent, passez TRUE pour cet indicateur lors du lancement d’un miniserveur.

Si vous écrivez un miniserveur, par définition, il sera toujours lancé par un conteneur. Vous devez toujours analyser la ligne de commande pour rechercher l’option « /Embedding ». L’absence de cette option sur la ligne de commande signifie que l’utilisateur a essayé de lancer le miniserveur en tant qu’application autonome. Si cela se produit, inscrivez le serveur auprès de la base de données d’inscription du système, puis affichez une boîte de message indiquant à l’utilisateur de lancer le miniserveur à partir d’une application conteneur.

Voir aussi

OLE
Serveurs
CWinApp ::RunAutomated
CWinApp ::RunEmbedded
COleTemplateServer, classe