Freigeben über


xlGetInst

Gilt für: Excel 2013 | Office 2013 | Visual Studio

Gibt das instance Handle der instance von Microsoft Excel zurück, die derzeit eine DLL aufruft.

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

Parameter

Diese Funktion hat keine Argumente.

Eigenschaftswert/Rückgabewert

Das instance-Handle (xltypeInt) befindet sich im Feld val.w.

Hinweise

Diese Funktion kann verwendet werden, um zwischen mehreren ausgeführten Excel-Instanzen zu unterscheiden, die die DLL aufrufen.

Wenn Sie diese Funktion mit Excel4 oder Excel4v aufrufen, ist die zurückgegebene XLOPER-Ganzzahlvariable eine 16-Bit-Kurzform mit Vorzeichen. Dies ist nur in der Lage, die niedrigen 16 Bits des 32-Bit-Windows-Handles zu enthalten. Ab Excel 2007 ist die ganzzahlige Variable des XLOPER12 ein 32-Bit-Wert mit Vorzeichen und enthält daher das gesamte Handle, sodass es nicht mehr erforderlich ist, alle geöffneten Fenster zu durchlaufen.

Wichtig

Wenn die xlGetInst-Funktion mit der 64-Bit-Version von Microsoft Excel verwendet wird, schlägt die Funktion fehl. Dies liegt daran, dass der xltypeInt-Werttyp nicht breit genug ist, um das von Excel in diesem Fall zurückgegebene 64-Bit-Handle aufzunehmen. Zu diesem Zweck wurde in Excel 2010 eine neue Funktion namens xlGetInstPtr eingeführt, die sowohl mit der 32-Bit- als auch der 64-Bit-Version von Excel ordnungsgemäß ausgeführt wird.

Beispiel

Im folgenden Beispiel wird die instance der letzten Kopie von Excel, die sie aufgerufen hat, mit der aktuellen Kopie von Excel verglichen, die sie aufgerufen hat. Wenn sie identisch sind, wird 1 zurückgegeben; andernfalls wird 0 zurückgegeben. Wenn die Funktion fehlschlägt, wird -1 zurückgegeben.

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

Siehe auch

xlGetHwnd

xlGetInstPtr

C-API-Funktionen, die nur aus einer DLL oder XLL aufgerufen werden können