Compartilhar via


xlGetInst

Aplica-se a: Excel 2013 | Office 2013 | Visual Studio

Retorna o identificador de instância da instância do Microsoft Excel que atualmente está chamando uma DLL.

Excel4(xlGetInst, LPXLOPER pxRes, 0); /* returns low part only */
Excel12(xlGetInst, LPXLOPER12 pxRes, 0); /* returns full handle */

Parâmetros

Essa função não tem argumentos.

Valor de propriedade/Valor de retorno

O identificador de instância (xltypeInt) estará no campo val.w .

Comentários

Essa função pode ser usada para distinguir entre várias instâncias em execução do Excel que estão chamando a DLL.

Quando você está chamando essa função usando Excel4 ou Excel4v, a variável de inteiro XLOPER retornada é um int curto assinado de 16 bits. Isso só é capaz de conter os 16 bits baixos do identificador do Windows de 32 bits. A partir do Excel 2007, a variável inteiro do XLOPER12 é um int assinado de 32 bits e, portanto, contém todo o identificador, removendo a necessidade de iterar todas as janelas abertas.

Importante

Se a função xlGetInst for usada com a versão de 64 bits do Microsoft Excel, a função falhará. Isso ocorre porque o tipo de valor xltypeInt não é largo o suficiente para manter a alça de 64 bits de comprimento retornada pelo Excel nesse caso. Para isso, o Excel 2010 introduziu uma nova função chamada xlGetInstPtr, que é executada corretamente com as versões de 32 bits e 64 bits do Excel.

Exemplo

O exemplo a seguir compara a instância da última cópia do Excel que a chamou à cópia atual do Excel que a chamou. Se forem iguais, ele retornará 1; se não, ele retorna 0; se a função falhar, ela retornará -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;
}

Confira também

xlGetHwnd

xlGetInstPtr

Funções da API de C que podem ser chamadas apenas de uma DLL ou XLL