Compartir a través de


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

xlGetHwnd

xlGetInstPtr

Funciones de la API de C que se pueden llamar solo desde una DLL o XLL