xlGetInst
Hace referencia a: Excel 2013 | Office 2013 | Visual Studio
Devuelve el identificador de instancia de la instancia de Microsoft Excel que actualmente llama a un archivo DLL.
Excel4(xlGetInst, LPXLOPER pxRes, 0); /* returns low part only */
Excel12(xlGetInst, LPXLOPER12 pxRes, 0); /* returns full handle */
Parameters
Esta función no tiene argumentos.
Valor de la propiedad/valor devuelto
El identificador de instancia (xltypeInt) estará en el campo val.w .
Comentarios
Esta función se puede usar para distinguir entre varias instancias en ejecución de Excel que llaman al archivo DLL.
Al llamar a esta función mediante Excel4 o Excel4v, la variable de entero XLOPER devuelta es un int corto de 16 bits con signo. Esto solo es capaz de contener los 16 bits bajos del identificador de Windows de 32 bits. A partir de Excel 2007, la variable entera del XLOPER12 es un int de 32 bits con signo y, por tanto, contiene todo el identificador, lo que elimina la necesidad de recorrer en iteración todas las ventanas abiertas.
Importante
Si la función xlGetInst se usa con la versión de 64 bits de Microsoft Excel, se producirá un error en la función. Esto se debe a que el tipo de valor xltypeInt no es lo suficientemente ancho como para contener el identificador de 64 bits de largo devuelto por Excel en este caso. Para este propósito, Excel 2010 introdujo una nueva función denominada xlGetInstPtr, que se ejecuta correctamente con las versiones de 32 y 64 bits de Excel.
Ejemplo
En el ejemplo siguiente se compara la instancia de la última copia de Excel que la llamó a la copia actual de Excel que la llamó. Si son iguales, devuelve 1; Si no es así, devuelve 0; Si se produce un error en la función, devuelve -1.
\SAMPLES\EXAMPLE\EXAMPLE.C
short WINAPI xlGetInstExample(void)
{
XLOPER12 xRes;
static HANDLE hOld = 0;
short iRet;
if (Excel12(xlGetInst, &xRes, 0) != xlretSuccess)
iRet = -1;
else
{
HANDLE hNew;
hNew = (HANDLE)xRes.val.w;
if (hNew != hOld)
iRet = 0;
else
iRet = 1;
hOld = hNew;
}
return iRet;
}
Vea también
Funciones de la API de C que se pueden llamar solo desde una DLL o XLL