Rejestracja
Gdy użytkownik chce wstawić element OLE do aplikacji, obiekt OLE przedstawia listę typów obiektów do wyboru. Ole pobiera tę listę z bazy danych rejestracji systemu, która zawiera informacje udostępniane przez wszystkie aplikacje serwera. Gdy serwer zarejestruje się, wpisy wprowadzane do systemowej bazy danych rejestracji (rejestru) opisują każdy typ obiektu, który dostarcza, rozszerzenia plików i ścieżkę do siebie, między innymi informacje.
Struktura i biblioteki dynamicznego linku OLE (DLL) używają tego rejestru do określenia typów elementów OLE dostępnych w systemie. Biblioteki DLL systemu OLE używają również tego rejestru do określenia sposobu uruchamiania aplikacji serwera po aktywowaniu połączonego lub osadzonego obiektu.
W tym artykule opisano, co każda aplikacja serwera musi wykonać podczas instalacji i za każdym razem, gdy jest wykonywana.
Aby uzyskać szczegółowe informacje o bazie danych rejestracji systemu i formacie plików reg używanych do jej aktualizacji, zobacz dokumentację programisty OLE.
Instalacja serwera
Podczas pierwszej instalacji aplikacji serwera należy zarejestrować wszystkie typy elementów OLE, które obsługuje. Można również zaktualizować bazę danych rejestracji systemu za każdym razem, gdy jest wykonywana jako aplikacja autonomiczna. Dzięki temu baza danych rejestracji jest aktualna, jeśli plik wykonywalny serwera zostanie przeniesiony.
Uwaga
Aplikacje MFC generowane przez kreatora aplikacji automatycznie rejestrują się, gdy są uruchamiane jako aplikacje autonomiczne.
Jeśli chcesz zarejestrować aplikację podczas instalacji, użyj programu RegEdit.exe. Jeśli dołączysz program instalacyjny do aplikacji, program instalacyjny uruchom polecenie "RegEdit /S appname.reg". (Flaga /S wskazuje operację dyskretną, oznacza to, że nie wyświetla okna dialogowego raportowania pomyślnego ukończenia polecenia). W przeciwnym razie poinstruuj użytkownika, aby ręcznie uruchomić regedit.
Uwaga
Plik reg utworzony przez kreatora aplikacji nie zawiera pełnej ścieżki pliku wykonywalnego. Program instalacyjny musi zmodyfikować plik reg, aby uwzględnić pełną ścieżkę do pliku wykonywalnego lub zmodyfikować zmienną środowiskową PATH w celu uwzględnienia katalogu instalacyjnego.
RegEdit scala zawartość pliku tekstowego reg z bazą danych rejestracji. Aby zweryfikować bazę danych lub naprawić ją, użyj edytora rejestru. Należy zachować ostrożność, aby uniknąć usuwania podstawowych wpisów OLE.
Inicjowanie serwera
Po utworzeniu aplikacji serwera za pomocą kreatora aplikacji kreator automatycznie wykonuje wszystkie zadania inicjowania. W tej sekcji opisano, co należy zrobić, jeśli ręcznie napiszesz aplikację serwera.
Gdy aplikacja serwera jest uruchamiana przez aplikację kontenera, biblioteki DLL systemu OLE dodają opcję "/Embedding" do wiersza polecenia serwera. Zachowanie aplikacji serwera różni się w zależności od tego, czy została uruchomiona przez kontener, więc pierwszą rzeczą, jaką aplikacja powinna zrobić po rozpoczęciu wykonywania, jest sprawdzenie opcji "/Embedding" lub "-Embedding" w wierszu polecenia. Jeśli ten przełącznik istnieje, załaduj inny zestaw zasobów, który pokazuje serwer jako aktywny lub w pełni otwarty. Aby uzyskać więcej informacji, zobacz Menu i zasoby: Dodatki serwera.
Aplikacja serwera powinna również wywołać jej CWinApp::RunEmbedded
funkcję, aby przeanalizować wiersz polecenia. Jeśli zwraca wartość niezerową, aplikacja nie powinna wyświetlać okna, ponieważ zostało ono uruchomione z aplikacji kontenera, a nie jako aplikacja autonomiczna. Ta funkcja aktualizuje wpis serwera w bazie danych rejestracji systemu i wywołuje RegisterAll
funkcję składową, wykonując rejestrację wystąpienia.
Po uruchomieniu aplikacji serwera należy upewnić się, że może przeprowadzić rejestrację wystąpienia. Rejestracja wystąpienia informuje biblioteki DLL systemu OLE, że serwer jest aktywny i gotowy do odbierania żądań z kontenerów. Nie dodaje wpisu do bazy danych rejestracji. Wykonaj rejestrację wystąpienia serwera, wywołując funkcję składową zdefiniowaną ConnectTemplate
przez COleTemplateServer
polecenie . Spowoduje to połączenie CDocTemplate
obiektu z obiektem COleTemplateServer
.
Funkcja ConnectTemplate
przyjmuje trzy parametry: CLSID serwera, wskaźnik do CDocTemplate
obiektu i flagę wskazującą, czy serwer obsługuje wiele wystąpień. Miniserver musi być w stanie obsługiwać wiele wystąpień, czyli musi być możliwe, aby wiele wystąpień serwera było uruchamianych jednocześnie, po jednym dla każdego kontenera. W związku z tym należy przekazać wartość TRUE dla tej flagi podczas uruchamiania miniserver.
Jeśli piszesz miniserver, z definicji będzie on zawsze uruchamiany przez kontener. Nadal należy przeanalizować wiersz polecenia, aby sprawdzić opcję "/Embedding". Brak tej opcji w wierszu polecenia oznacza, że użytkownik próbował uruchomić miniserver jako autonomiczną aplikację. W takim przypadku zarejestruj serwer w bazie danych rejestracji systemu, a następnie wyświetl pole komunikatu informujące użytkownika o uruchomieniu miniserver z aplikacji kontenera.
Zobacz też
OLE
Serwery
CWinApp::RunAutomated
CWinApp::RunEmbedded
Klasa COleTemplateServer