Makale numarası: 315458 - Son Gözden Geçirme: 04 Mart 2004 Perşembe - Gözden geçirme: 1.3

SORUN: Visual Basic kod alanından Basit MAPI BMAPI işlevler çalışmayabilir

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
ÖNEMLI: Bu makale kayıt defterini değiştirmeyle ilgili bilgiler içermektedir. Kayıt defterini değiştirmeden önce yedeklediğinizden ve bir sorun çıkması durumunda kayıt defterini geri nasıl yükleyeceğinizi anladığınızdan emin olun. Kayıt defterini yedekleme, geri yükleme ve düzenleme ile ilgili bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
256986  (http://support.microsoft.com/kb/256986/EN-US/ ) Microsoft Windows Kayıt Defteri'nin Açıklaması
Hepsini aç | Hepsini kapa

Belirtiler

Microsoft Visual Basic kodundan yapılan çağrıları Mapısendmail çalışması için aşağıdakine benzer bir hata iletisiyle başarısız olabilir:
Microsoft Outlook
Varsayılan posta istemcisi yok veya geçerli posta istemcisi ileti isteğini yerine getirmek edemiyor. Lütfen Microsoft Outlook'u çalıştırın ve bunu varsayılan posta istemcisi olarak ayarlayın.
Bu sorun genellikle, Microsoft Outlook Express'i varsayılan posta istemcisi olarak ayarlandığında oluşur.

Neden

Basit MAPI kullanan bir Visual Basic programlarınızı BMAPI işlevleri alma Declare ifadeleri kullanın. Outlook Express'i varsayılan posta istemcisi, MAPI saplama kitaplığı bu çağrı için Outlook Express'i yol olamaz; bunun yerine, çağrıların başarısız olmasına ve bir hata iletisi görüntülenir.

Çözüm

Bu sorunu gidermek için bir başvuru BMAPI işlevlerini Declare ifadeleri kullanmak için yoludur. Ancak, Visual Basic çağrılamıyor çünkü (gerekli yapıların ikili düzeyinde değişiklik yapmıyorsanız) non-BMAPI çalışır, bu tür bir C veya C++ yapıları işleyebileceği bir dilden basit MAPI işlevleri çağırmak için kod yazmak isteyebilirsiniz.

Iki çözünürlükte sonunda "Ek bilgi" bölümünde sağlanmıştır.

Durum

Bu davranış tasarım yüzündendir.

Daha fazla bilgi

MAPI saplama kitaplığı, Mapi32.dll, genellikle basit MAPI kullanan bir istemci uygulaması tarafından yüklenen dll'dir. Saplama kitaplığı kayıt defteri ayarlarına dayanan uygun MAPI uygulamasını çağrıları yönlendirir. Bu şekilde, çeşitli uygulamaları birbirlerinin üzerine yazılmadan bir arada bulunabilir.

Kitaplık, saplama kitaplığı tarafından verilen bir işlev çağrısı yapıldığında, aşağıdaki adımları izler:
  1. Bu işlev bir basit MAPI işlevi veya bir genişletilmiş MAPI işlevi olup olmadığını belirler. Aşağıdaki işlevler verme, saplama kitaplığı, basit MAPı'YI işlevleri olarak işaretlenir:

    • MAPIAddress
    • MAPIDeleteMail
    • MAPIDetails
    • MAPIFindNext
    • MAPIFreeBuffer
    • MAPILogoff
    • MAPILogon
    • Mapıreadmail
    • MAPIResolveName
    • MAPISaveMail
    • MAPISendDocuments
    • Mapısendmail

    Tüm diğer verme genişletilmiş MAPI işlevleri işlevlerdir.
  2. Bu, geçerli varsayılan MAPI uygulamasını belirlemek için aşağıdaki kayıt defteri anahtarında görünür:
    HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail::(default)
  3. Daha sonra yüklemek için doğru DLL dosyasının yolu bulmak için istemcinin anahtarının altında görünüyor. Işlev bir basit MAPI işlevi, DllPath değeri tarafından belirtilen DLL yükler ve sonra işlevini çağırır. Işlev bir genişletilmiş MAPI işlevidir DllPathEx değeri tarafından belirtilen DLL yükler. Uygun DLL bulma sonra daha sonra işlevini çağırır.

    Microsoft Outlook söz konusu olduğunda, örneğin DLLPath veya DLLPathEx aşağıdaki anahtar altında değer arar:
    HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\Microsoft Outlook
  4. DllPathEx veya DllPath bulunamazsa, saplama kitaplığı, saplama kitaplığı ile aynı dizinde bulunan Mapi32x.dll dosyasını kullanır. Bu dosya genellikle bir adlandırılmış saplama kitaplığı yüklenirken, önceden varolan Mapi32.dll dosyasının kopyasıdır. Özellikle birçok sistemlerde yalnızca Outlook ve Outlook Express yüklü olduğunda, bu dosya yok.
  5. Mapi32x.dll bulmak, saplama kitaplığı başarısız olursa, aşağıdaki anahtarlarından birinde bulunan bir ileti görüntüler:
    HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail::PreFirstRun

    -VEYA-

    HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail::NoMailClient
Outlook Express'i kullanarak, sorunun nedeni aşağıdaki gibidir:
  1. Çoğu Visual Basic kodu olarak BMAPISendMail Mapısendmail alır Mapivb32.bas modüle göre Declare ifadeleri kullanır. Diğer SimpleMAPI işlevlerin çoğu, bunların BMAPI eşdeğerleriyle de bildirilir.Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
    163216  (http://support.microsoft.com/kb/163216/EN-US/ ) 32-Bit platformlarda basit MAPI için güncelleştirilmiş Mapivb32.bas
  2. DllPath belirtilen DLL kullanan basit MAPI fonksiyonların listesi BMAPI işlevleri olmadığınızdan saplama kitaplığı bunları DllPathEx değeri kullanarak yönlendirir.
  3. Outlook Express'i genişletilmiş MAPI uygulamadığından DllPathEx için ayarlanmış değer var.
  4. Saplama kitaplığı yok ve sonuç olarak PreFirstRun iletiyi görüntüler ve Mapi32x.dll kullanmaya çalışır.
Bu soruna geçici bir çözüm için ek iki yolu vardır:
  • Outlook Express'i varsayılan posta istemcisi olup olmadığını ve, DllPathEx değeri kayıt defterine aşağıdaki şekilde eklemek için BIR geçici çözüm şöyledir:
    HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\Outlook Express::DllPathEx %ProgramFiles%\Outlook Express\msoe.dll =
    UYARı: Kayıt Defteri Düzenleyicisi'ni yanlış kullanırsanız, işletim sisteminizi yeniden yüklemenizi gerektirebilecek ciddi sorunlara neden olabilir. Microsoft, Kayıt Defteri Düzenleyicisi yanlış kullanımından kaynaklanan sorunları çözebileceğinizi garanti edemez. Kayıt Defteri Düzenleyicisi'ni kullanmak kendi sorumluluğunuzdadır.

    Outlook Express, uygulayan ve Msoe.dll the BMAPIFunctions verir çünkü DllPathEx ayarlama, bunları rota çağrıları için saplama kitaplığı sağlar. Genişletilmiş MAPI kullanmaya çalışır bir istemci (Msoe.dll genişletilmiş MAPI işlevleri vermez için) bir hata alırsınız tehlike, böylece içinde olduğu zaman, bunun yerine Mapi32x.dll başarıyla kullanmış olabilirsiniz.
  • Bir uygulama için tüm MAPI çağrılarını Outlook Express uygulamasını kullanmak için zorlama hakkında bilgi için aşağıdaki kayıt defteri anahtarının altında yeni bir değer oluşturun:
    Hkey_local_machıne\software\microsoft\windows Messaging Subsystem\MSMapiApps
    Değer adını (örneğin, uygulam.exe) uygulama adını ayarlayın ve sonra Outlook Express'e değerini ayarlayın. Bu, saplama kitaplığı atlar ve BMAPI çağrıları, doğrudan Outlook Express de dahil olmak üzere tüm MAPI çağrıları geçirmesini zorlar.

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Office Outlook 2007
  • Simple Messaging Application Programming Interface (MAPI)
Anahtar Kelimeler: 
kbmt kbmsg kbprb KB315458 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:315458  (http://support.microsoft.com/kb/315458/en-us/ )