xlGetInstPtr
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(xlGetInstPtr, LPXLOPER pxRes, 0);Excel12(xlGetInstPtr, LPXLOPER12 pxRes, 0);
Parameter
Diese Funktion hat keine Argumente.
Eigenschaftswert/Rückgabewert
Das instance-Handle (xltypeBigData) befindet sich im Feld val.bigdata.h.hdata.
Hinweise
Diese Funktion kann verwendet werden, um zwischen mehreren ausgeführten Excel-Instanzen zu unterscheiden, die die DLL aufrufen.
Diese Funktion gibt einen richtigen Wert mit 32-Bit- und 64-Bit-Versionen von Excel zurück. Es wurde in Excel 2010 als Erweiterung der xlGetInst-Funktion eingeführt, die nur mit 32-Bit-Versionen von Excel ordnungsgemäß funktioniert.
Diese Funktion funktioniert ordnungsgemäß, wenn sie sowohl mit den Excel4- als auch mit Excel12-Varianten der API-Rückruffunktionen aufgerufen wird, da sowohl XLOPER als auch XLOPER12 dieselbe Struktur aufweisen, die den xltypeBigData-Werttyp unterstützt.
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. Dieses Beispiel funktioniert sowohl mit 32-Bit- als auch mit 64-Bit-Versionen von 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;
}