Ako nájsť správnu cestu k súboru Mapisvc.inf v programe Microsoft Outlook

Preklady článku Preklady článku
ID článku: 229700 - Zobraziť produkty, ktorých sa tento článok týka.
Rozbaliť všetko | Zbaliť všetko

SUHRN

Program Microsoft Outlook vystavuje FGetComponentPath Funkcia v súbore Mapistub.dll, ktorý vám pomôže nájsť cestu k súboru Mapisvc.inf. Tento článok popisuje ako nájsť cestu k súboru Mapisvc.Inf pomocou vzorka kódu v časti "Ďalšie informácie".

Pred Microsoft Outlook 2000, vždy bol nainštalovaný Mapisvc.inf súbor v adresári systému ako vrátený rozhranie API systému Win32 GetSystemDirectory Funkcia.

DALSIE INFORMACIE

Poznámka: Nasledujúca ukážka kódu je spätne kompatibilný s všetky predchádzajúce verzie programu Outlook. Nasledujúca ukážka kódu nájde cestu k súboru Mapisvc.inf či súboru Mapisvc.inf existuje v adresári systému alebo nie.
typedef BOOL (STDAPICALLTYPE FGETCOMPONENTPATH)
(LPSTR szComponent,
 LPSTR szQualifier,
 LPSTR szDllPath,
 DWORD cchBufferSize,
 BOOL fInstall);
typedef FGETCOMPONENTPATH FAR * LPFGETCOMPONENTPATH;    

/////////////////////////////////////////////////////////////////////////////// 
// Function name    : InitMAPIDir
// Description      : For Outlook 2000 compliance. This will get the correct path to the
//                  : MAPISVC.INF file.
// Return type      : void 
// Argument         : LPSTR szMAPIDir - Buffer to hold the path to the MAPISVC file.
//                  : ULONG cchINIFileName - size of szMAPIDir
void InitMAPIDir(LPSTR szINIFileName, ULONG cchINIFileName)
{
    UINT uiRet = 0;
    CHAR szSystemDir[MAX_PATH+1] = {0};

    // Get the system directory path
    // (mapistub.dll and mapi32.dll reside here)
    uiRet = GetSystemDirectoryA(szSystemDir, MAX_PATH);
    if(uiRet > 0)
    {
        HRESULT hRes = S_OK;
        CHAR szDLLPath[MAX_PATH+1] = {0};

        hRes = StringCchPrintfA(szDLLPath, MAX_PATH+1, "%s\\%s", 
            szSystemDir, "mapistub.dll");
        if(SUCCEEDED(hRes))
        {
            LPFGETCOMPONENTPATH pfnFGetComponentPath = NULL;

            HMODULE hmodStub = 0;
            HMODULE hmodMapi32 = 0;

            // Load mapistub.dll
            hmodStub = LoadLibraryA(szDLLPath);
            if(hmodStub)
            {   
                // Get the address of FGetComponentPath from the mapistub
                pfnFGetComponentPath = (LPFGETCOMPONENTPATH)GetProcAddress(
                    hmodStub, "FGetComponentPath");
            }

            // If we didn't get the address of FGetComponentPath
            // try mapi32.dll
            if(!pfnFGetComponentPath)
            {
                hRes = StringCchPrintfA(szDLLPath, MAX_PATH+1, "%s\\%s", 
                    szSystemDir, "mapi32.dll");
                if(SUCCEEDED(hRes))
                {
                    // Load mapi32.dll
                    hmodMapi32 = LoadLibraryA(szDLLPath);
                    if(hmodMapi32)
                    {
                        // Get the address of FGetComponentPath from mapi32
                        pfnFGetComponentPath = (LPFGETCOMPONENTPATH)GetProcAddress(
                            hmodMapi32, "FGetComponentPath");
                    }
                }
            }

            BOOL bRet = FALSE;

            if(pfnFGetComponentPath)
            {
                // Now that we have the address of FGetComponentPath
                // Let's call it with the GUID for mapisvc.inf
                bRet = pfnFGetComponentPath(
                    "{473FF9A0-D659-11D1-A4B2-006008AF820E}",
                    NULL, szINIFileName, cchINIFileName, TRUE); 
            }

            // If FGetComponentPath returns FALSE or if
            // it returned nothing, or if we never found an
            // address of FGetComponentPath, then
            // just default to the system directory
            if(!bRet || szINIFileName[0] == '\0')
            {
                hRes = StringCchPrintfA(szINIFileName, cchINIFileName,
                    "%s\\%s", szSystemDir, "mapisvc.inf");
            }

            if(hmodMapi32)
                FreeLibrary(hmodMapi32);

            if(hmodStub)
                FreeLibrary(hmodStub);
        }
    }
}

Vlastnosti

ID článku: 229700 - Posledná kontrola: 23. októbra 2011 - Revízia: 3.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft Office Outlook 2003
  • Microsoft Outlook 2002 Standard Edition
  • Microsoft Outlook 2000 Standard Edition
  • Messaging Application Programming Interface
Kľúčové slová: 
kbhowto kbmsg kbmt KB229700 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:229700

Odošlite odozvu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com