您应该检查许可信息xlAutoOpen
,因为该功能是第一个切入点,以激活XLL是总是用Excel调用。如果密码无效,则返回0表示未能优于和不注册您的UDF(退出前致电xlfRegister
)。
我注意到,如果您注册了UDF和你返回0, 的XLL仍然加载和UDF是可用的,所以似乎从xlAutoOpen
返回 变量不被 Excel中考虑但按照惯例,我认为最好保持返回零 表示失败。
我相信MSDN文档是有误导性的。 xlAutoAdd
不适用于检查许可证,因为它是一个可选功能,只有在插入管理器添加XLL或将其打开为文档(使用文件/打开)时称为。我假设您可能拥有试用许可证,因此如果用户许可证仍然有效,则应在每次加载时检查它。
例
通常情况下,你从xlAutoAdd
叫xlAutoOpen
你的支票仍然会做: 伪代码:
int __stdcall xlAutoAdd(void)
{
if(!Isinitialised)
if(xlAutoOpen() == 0) // licence check is still performed
returns 0 ;
...
MessageBoxA(GetActiveWindow(), "Thank you to install ...", "AutoOpen", MB_OK);
Isinitialised = true;
}
因为xlAutoOpen
总是用Excel叫你应该执行里面有一个类似的检查:
bool Isinitialised = false;
int __stdcall xlAutoOpen(void) // Register the functions
{
if(Isinitialised)
return 1;
if(!ValidLicense()) // check licence in xlAutoOpen
return 0;
// continue initialization , registration ..
.....
Isinitialised = true;
}
最后请注意,您可以省略xlAutoAdd
,因为它没有任何不良后果并且不是Excel所必需的。我个人不使用这个功能。