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;
}