• 【XLL API 函数】xlfUnregister (Form 1)


    此函数可以被 Excel 已经载入的 XLL 或 DLL 调用。它等效于宏表函数 UNREGISTER。

    xlfUnregister 有两种调用形式:

    • 形式1:Unregister 单独的命令或函数
    • 形式2:卸载 和 去激活 XLL

    之前使用 xlfRegister 或 REGISTER 函数时,会进函数调用次数进行计数,使用此函数可以减少计数。如果计数器已经为0,调用这个函数将不会产生任何效果。当使用DLL中所有的函数调用计数器都为0,DLL 将会从内存中卸载。

    xlfRegister (Form 1) 还定义了一个隐藏的名字做为函数的文本参数,pxFunctionText,此参数会评估函数的或命令的注册ID。当反注册函数,此名称将使用 xlfSetName 删除。因此函数名称不会再次在 Function Wizard 中显示出来。

    Excel4(xlfUnregister, LPXLOPER pxRes, 1, LPXLOPER pxRegisterId);
    

    参数

    pxRegisterId(xltypeNum)

    这表示在反注册的函数注册ID

    属性值和返回值

    如果成功,返回 TRUE (xltypeBool),反之返回 FALSE

    备注

    函数注册ID由 xlfRegister 第函数第一次注册时返回。它也可以通过调用 xlfRegisterIdxlfEvaluate 函数返回。注意,如果函数没有注册的话,使用 xlfRegisterId 会将函数进行注册。正是由于这个原因,如果你只是想获取ID的而不注册函数的话,最好是将函数名作为 xlfEvaluate 参数进行处理。

    实例

    查看 SAMPLESGENERICGENERIC.C.
    中的 fExit 函数

    [C++]
    int WINAPI fExit(void)
    {
       XLOPER12  xDLL,    // The name of this DLL //
       xFunc,             // The name of the function //
       xRegId;            // The registration ID //
       int i;
    
    //
    // This code gets the DLL name. It then uses this along with information
    // from g_rgFuncs[] to obtain a REGISTER.ID() for each function. The
    // register ID is then used to unregister each function. Then the code
    // frees the DLL name and calls xlAutoClose.
    //
    
       // Make xFunc a string //
       xFunc.xltype = xltypeStr;
    
       Excel12f(xlGetName, &xDLL, 0);
    
       for (i = 0; i < g_rgWorksheetFuncsRows; i++)
       {
          xFunc.val.str = (LPWSTR) (g_rgWorksheetFuncs[i][0]);
          Excel12f(xlfRegisterId,&xRegId,2,(LPXLOPER12)&xDLL,(LPXLOPER12)&xFunc);
          Excel12f(xlfUnregister, 0, 1, (LPXLOPER12) &xRegId);
       }
    
       for (i = 0; i < g_rgCommandFuncsRows; i++)
       {
          xFunc.val.str = (LPWSTR) (g_rgCommandFuncs[i][0]);
          Excel12f(xlfRegisterId,&xRegId,2,(LPXLOPER12)&xDLL,(LPXLOPER12)&xFunc);
          Excel12f(xlfUnregister, 0, 1, (LPXLOPER12) &xRegId);
       }
    
       Excel12f(xlFree, 0, 1,  (LPXLOPER12) &xDLL);
    
       return xlAutoClose();
    }
    
  • 相关阅读:
    DS博客作业05--查找
    DS博客作业04--图
    DS博客作业03--树
    栈和队列
    第六次作业
    第五次作业
    第四次作业
    第三次作业
    java任务
    第三周-自主学习任务-面向对象基础与类的识别
  • 原文地址:https://www.cnblogs.com/boluoke/p/5944791.html
Copyright © 2020-2023  润新知