让动态链接库只能被调用一次的方法???

xiaoqiqixiao 2004-01-05 09:42:37
一个动态链接库,假设是ActiveX控件吧,希望只能被调用一次,有多少方法可以实现,最简单的方法是什么?
...全文
141 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
victor_cui 2004-01-05
  • 打赏
  • 举报
回复
这么几行代码还嫌长,我晕倒,看来只有我告诉他了“不要起”~-~
xiaoqiqixiao 2004-01-05
  • 打赏
  • 举报
回复
checkyvc6(checkyvc6) 说的不是很详细,但用共享内存肯定是可以的,就是好象复杂了些吧

victor_cui(夕阳) 的方法应该是可以用的,就是不知道有没有更简单的,呵呵

sevencat 2004-01-05
  • 打赏
  • 举报
回复
基于一个字符串创建一个事件
zhaolaoxin 2004-01-05
  • 打赏
  • 举报
回复
在dll中设置一个静态变量,启动时进行判断是否大于1,若大于1则退出,否则该静态变量加1。
victor_cui 2004-01-05
  • 打赏
  • 举报
回复
加bool变量是不行的,因为每个副本加载不会共享这个变量,所以无效,简单的方式是建立一个具名的内核对象,什么都行,比如event, mutex, ....,常用的大多用mutex
HANDLE mymutex = CreateMutex(NULL,TRUE, "my activex");
if(ERROR_ALREADY_EXISTS == ::GetLastError())///说明已经被调用了一次
{
exit(0);
}

yintongshun 2004-01-05
  • 打赏
  • 举报
回复
在你调用的地方加上BOOL型变量,加载了设置为TRUE,否则为FALSE,如果再加载先判断一下如果变量为TRUE,则不再加载
xiaoqiqixiao 2004-01-05
  • 打赏
  • 举报
回复
这里,先就写注册表和写文件的提个醒,这种方法得首先保证你的程序不会中途中断,包括停电等等外部故障,否则,你下次启动将会一次都无法调用了,
其实基本的方法都在共享内存上,我其实是想知道,那个一般的ActiveX不是都有一个m_nRef吗?有没有什么方法可以得到这个Ref,这样我不是就能知道有多少程序在调用我的DLL了吗?
checkyvc6 2004-01-05
  • 打赏
  • 举报
回复
写本地或者内存映射也可以实现吧
xiaoqiqixiao 2004-01-05
  • 打赏
  • 举报
回复
那个,这个,对DLL实在不是很熟悉,共享代码段在哪里啊?
kingzai 2004-01-05
  • 打赏
  • 举报
回复
在共享代码段里使用一个BOOL变量,进行互斥
hujun4u 2004-01-05
  • 打赏
  • 举报
回复

写注册表吧
xiaoqiqixiao 2004-01-05
  • 打赏
  • 举报
回复
哎,那也没法了,只能如此
谢谢大家支持,就此结了吧
sevencat 2004-01-05
  • 打赏
  • 举报
回复
victor_cui(夕阳) 说得对,这可能是最常用的一种办法了,也是最简单的一种办法了。
yongdu 2004-01-05
  • 打赏
  • 举报
回复
共享段做个变量

写注册表项或者写.ini
xiaoqiqixiao 2004-01-05
  • 打赏
  • 举报
回复
呵呵,抱歉,抱歉,因为感觉上用到这种内核量,好象有一种劳师动重的感觉,所以。。。
倒不是说代码长和短的问题

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧