xlGetInstPtr

Область применения: Excel 2013 | Office 2013 | Visual Studio

Возвращает дескриптор экземпляра Microsoft Excel, который в настоящее время вызывает библиотеку DLL.

Excel4(xlGetInstPtr, LPXLOPER pxRes, 0);Excel12(xlGetInstPtr, LPXLOPER12 pxRes, 0);

Параметры

Эта функция не имеет аргументов.

Значение свойства и возвращаемое значение

Дескриптор экземпляра (xltypeBigData) будет находиться в поле val.bigdata.h.hdata .

Замечания

Эту функцию можно использовать для различения нескольких запущенных экземпляров Excel, вызывающих библиотеку DLL.

Эта функция возвращает правильное значение как в 32-разрядной, так и в 64-разрядной версиях Excel. Он появился в Excel 2010 как расширение функции xlGetInst , которая правильно работает только с 32-разрядными версиями Excel.

Эта функция работает правильно при вызове с использованием вариантов функций обратного вызова API Excel4 и Excel12 , так как xloper и XLOPER12 имеют одинаковую структуру, которая поддерживает тип значения xltypeBigData .

Пример

В следующем примере сравнивается экземпляр последней копии Excel, которая вызвала его, с текущей копией Excel, которая ее вызвала. Если они совпадают, возвращается значение 1; Если нет, возвращается значение 0; Если функция завершается ошибкой, возвращается значение -1. Этот пример работает как с 32-разрядной, так и с 64-разрядной версиями Excel.

\SAMPLES\EXAMPLE\EXAMPLE.C

short WINAPI xlGetInstPtrExample(void)
{
    XLOPER12 xRes;
    static HANDLE hOld = 0;
    short iRet;
    if (Excel12(xlGetInstPtr, &xRes, 0) != xlretSuccess)
    iRet = -1;
    else
    {
    HANDLE hNew;
    hNew =  xRes.val.bigdata.h.hdata;
    if (hNew != hOld)
    iRet = 0;
    else
    iRet = 1;
    hOld = hNew;
    }
    return iRet;
}

См. также