乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 41|回复: 2

检查许可证的最佳方法? 时序问题

[复制链接]

3

主题

8

帖子

1

银币

初来乍到

Rank: 1

铜币
20
发表于 2008-2-13 13:57:32 | 显示全部楼层 |阅读模式
多亏了Keith的帮助,我写了一系列的ActiveX DLLs,我想把它们作为AutoCAD的附加应用程序发布。我想建立一种方法让每个dll检查一个许可程序的状态。我想我应该写一个VB6 EXE来处理许可问题,然后让每个DLL在启动时检查它。我创建了EXE作为一种“TSR ”,在后台全职运行,然后终止于AutoCAD。这种机制似乎工作得很好,但问题是启动EXE。我试过从一个MNL文件启动它,在调用特定的DLL之前从一个工具栏按钮启动它,从ACADDOC启动它——在每一种情况下它都干扰启动AutoCAD(它启动两个ACAD。前任和其他一些东西)。
我最近尝试使用SHELL从每个DLL内部启动EXE。我使用FindInstance检查,这样如果EXE已经在运行,DLL就不会启动第二个会话。除了一个问题——时间之外,这个方法似乎也很有效。我不能做典型的外壳等待,因为它们要求外壳程序在继续之前结束,而我的程序不能这样做。
The中有一个对话框,允许用户与之交互-它检查我的锁定机制,并确保应用程序处于试用期或已注册等。同样,这很好。
问题是EXE的锁定对话框与DLL的主(模态)对话框同时出现在屏幕上,即使外壳进程(我知道是异步的)在对话框应该出现之前就开始了。我描述的序列在IDE中工作得很好,但是在编译之后,对话框几乎同时出现。这样做的问题是,如果用户取消EXE对话框,它应该会阻止DLL的对话框出现!正如我所说的,它在IDE中可以工作,但在编译后就不行了。
到目前为止,我的最佳猜测是这是一个编组问题,因为EXE不在AutoCAD的进程中,但dll在。我应该尝试用另一个DLL来做EXE的工作吗?
有没有更好的方法来完成我想完成的事情?

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

18

主题

222

帖子

51

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
260
发表于 2008-2-14 03:37:27 | 显示全部楼层
好吧,这可能不是更好,但这是我们所用的,而且有效。我们的程序在AutoCAD中也无法运行(因为它需要与Acad 2000到2008兼容)。
我们使用的不是许可证exe,而是简单的文本文件~加密
程序启动时,会检查许可证文件是否存在,并验证其内容。如果一切正常,程序将以完整的moce运行。如果存在任何问题(例如,有人篡改了文件内容),则会恢复到演示模式<这是基本的,很简单,但在过去三年中一直运行良好
回复

使用道具 举报

3

主题

8

帖子

1

银币

初来乍到

Rank: 1

铜币
20
发表于 2008-2-14 13:50:19 | 显示全部楼层
我想我要创建另一个ActiveX DLL来处理许可。它将由我的每个“程序DLL”调用,并设置为布尔函数。挑战在于找出一种方法,在每个AutoCAD会话中以某种全局可用的方式保存许可DLL的结果,这样我就不必每次运行程序DLL时都调用许可DLL。由于DLL的每个实例在完成后都会被销毁,因此我不知道如何将许可证DLL的结果从一个实例传递到另一个实例,除非使用文本文件或注册表项。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-5 08:53 , Processed in 1.046402 second(s), 58 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表