Kayıt
Kullanıcı bir uygulamaya OLE öğesi eklemek istediğinde, OLE aralarından seçim yapabileceğiniz nesne türlerinin listesini sunar. OLE, bu listeyi tüm sunucu uygulamaları tarafından sağlanan bilgileri içeren sistem kayıt veritabanından alır. Bir sunucu kendisini kaydettirdiğinde, sistem kayıt veritabanına (Kayıt Defteri) yerleştirdiği girdiler, sağladığı her nesne türünü, dosya uzantılarını ve kendisine giden yolu ve diğer bilgilerle birlikte açıklar.
Çerçeve ve OLE sistemi dinamik bağlantı kitaplıkları (DLL), sistemde hangi tür OLE öğelerinin kullanılabilir olduğunu belirlemek için bu kayıt defterini kullanır. OLE sistemi DLL'leri, bağlı veya katıştırılmış bir nesne etkinleştirildiğinde sunucu uygulamasının nasıl başlatıldığını belirlemek için de bu kayıt defterini kullanır.
Bu makalede, her sunucu uygulamasının yüklendiğinde ve her yürütülürken yapması gerekenler açıklanmaktadır.
Sistem kayıt veritabanı ve bunu güncelleştirmek için kullanılan .reg dosyalarının biçimi hakkında ayrıntılı bilgi için bkz . OLE Programcı Başvurusu.
Sunucu Yüklemesi
Sunucu uygulamanızı ilk yüklediğinizde, desteklediği tüm OLE öğesi türlerini kaydetmesi gerekir. Ayrıca, sunucunun tek başına bir uygulama olarak her yürütülürken sistem kayıt veritabanını güncelleştirmesini de sağlayabilirsiniz. Bu, sunucunun yürütülebilir dosyası taşınırsa kayıt veritabanının güncel kalmasını sağlar.
Dekont
Uygulama sihirbazı tarafından oluşturulan MFC uygulamaları, tek başına uygulamalar olarak çalıştırıldığında kendilerini otomatik olarak kaydeder.
Uygulamanızı yükleme sırasında kaydetmek istiyorsanız RegEdit.exe programını kullanın. Uygulamanıza bir kurulum programı eklerseniz, kurulum programının "RegEdit /S appname.reg" çalıştırmasını sağlayın. (/S bayrağı sessiz işlemi gösterir, yani komutun başarıyla tamamlandığını bildiren iletişim kutusunu görüntülemez.) Aksi takdirde, kullanıcıya RegEdit'i el ile çalıştırmasını sağlayın.
Dekont
Uygulama sihirbazı tarafından oluşturulan .reg dosyası yürütülebilir dosyanın tam yolunu içermez. Yükleme programınız.reg dosyasını yürütülebilir dosyanın tam yolunu içerecek şekilde değiştirmeli veya PATH ortam değişkenini yükleme dizinini içerecek şekilde değiştirmelidir.
RegEdit, .reg metin dosyasının içeriğini kayıt veritabanıyla birleştirir. Veritabanını doğrulamak veya onarmak için kayıt defteri düzenleyicisini kullanın. Temel OLE girdilerini silmekten kaçınmaya dikkat edin.
Sunucu Başlatma
Uygulama sihirbazıyla bir sunucu uygulaması oluşturduğunuzda, sihirbaz sizin için tüm başlatma görevlerini otomatik olarak tamamlar. Bu bölümde, bir sunucu uygulamasını el ile yazarsanız yapmanız gerekenler açıklanmaktadır.
Bir sunucu uygulaması bir kapsayıcı uygulaması tarafından başlatıldığında, OLE sistemi DLL'leri sunucunun komut satırına "/Embedding" seçeneğini ekler. Sunucu uygulamasının davranışı, kapsayıcı tarafından başlatılıp başlatılmadığına bağlı olarak değişir. Bu nedenle yürütmeye başladığında uygulamanın yapması gereken ilk şey komut satırında "/Embedding" veya "-Embedding" seçeneğini denetlemektir. Bu anahtar varsa, sunucuyu yerinde etkin veya tamamen açık olarak gösteren farklı bir kaynak kümesi yükleyin. Daha fazla bilgi için bkz . Menüler ve Kaynaklar: Sunucu Eklemeleri.
Sunucu uygulamanız komut satırını ayrıştırmak için işlevini de çağırmalıdır CWinApp::RunEmbedded
. Sıfır olmayan bir değer döndürürse, tek başına uygulama olarak değil kapsayıcı uygulamasından çalıştırıldığı için uygulama penceresini göstermemelidir. Bu işlev, sunucunun sistem kayıt veritabanındaki girişini güncelleştirir ve örnek kaydını gerçekleştirerek üye işlevini sizin için çağırır RegisterAll
.
Sunucu uygulamanız başlatılırken, örnek kaydı gerçekleştirediğinden emin olmanız gerekir. Örnek kaydı, OLE sistemi DLL'lerine sunucunun etkin olduğunu ve kapsayıcılardan istek almaya hazır olduğunu bildirir. Kayıt veritabanına bir girdi eklemez. tarafından COleTemplateServer
tanımlanan üye işlevini çağırarak sunucunun ConnectTemplate
örnek kaydını gerçekleştirin. Bu, CDocTemplate
nesneyi nesneye COleTemplateServer
bağlar.
ConnectTemplate
işlevi üç parametre alır: sunucunun CLSID değeri, nesne işaretçisi CDocTemplate
ve sunucunun birden çok örneği destekleyip desteklemediğini gösteren bir bayrak. Bir mini sunucunun birden çok örneği destekleyebilmesi, yani her kapsayıcı için bir tane olmak üzere sunucunun birden çok örneğinin aynı anda çalışması mümkün olmalıdır. Sonuç olarak, bir mini sunucu başlatırken bu bayrak için TRUE geçirin.
Mini sunucu yazıyorsanız, tanım gereği her zaman bir kapsayıcı tarafından başlatılır. "/Embedding" seçeneğini denetlemek için komut satırını ayrıştırmalısınız. Komut satırında bu seçeneğin olmaması, kullanıcının mini sunucusunu tek başına bir uygulama olarak başlatmayı denediği anlamına gelir. Bu durumda, sunucuyu sistem kayıt veritabanına kaydedin ve ardından kullanıcıyı kapsayıcı uygulamasından mini sunucuyu başlatması konusunda bilgilendiren bir ileti kutusu görüntüleyin.
Ayrıca bkz.
OLE
Sunucular
CWinApp::RunAutomated
CWinApp::RunEmbedded
COleTemplateServer Sınıfı