找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2043|回复: 15

[求助] [求助]:请教lisp编程中如何设置使用次数或时间的限值

[复制链接]
发表于 2003-5-25 11:32:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
看见网上有些经过编译的VLX应用程序,设置了使用时间或使用次数的限值,程序使用了一定次数以后就不能继续使用了。很感兴趣,但是由于看不到源代码,无法了解这个功能实现的办法。那位朋友能不能给出实例。谢谢了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-5-26 21:12:01 | 显示全部楼层
一个思路:读取系统时钟,然后跟预置值比较,如果相等就不加载,或显示警告框。
在使用次数上可以让程序在运行是生成一个使用次数记录文件,并且将该文件放的隐秘一点,以后每次运行程序都更新一次,当次数达到预置值就作相应的动作。

以上仅提供一个思路,想法可能比较简单。就作为抛砖引玉吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-5-27 08:26:40 | 显示全部楼层
谢谢斑竹。你提供的思路与我的猜想基本上一致。只是如果采用读取时钟的方式并不是很好,如果更改系统时间实际上限值就不起作用了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-5-27 09:23:49 | 显示全部楼层
也可以利用VLISP中有关注册表的操作,在注册表中添加键值,以达到控制的目的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-5-27 12:38:37 | 显示全部楼层
利用系统时间的一种方法:


  1. (setq hqdshare nil)
  2. ;;----------------------------------------------------
  3. (defun check_time (/  hqdregis  hqdshare time)
  4.   (defun chrlist (s / c l)
  5.     (setq c 0  l ())         
  6.     (repeat (strlen s)
  7.          (setq c (1+ c))
  8.         (setq l (append l (list (substr s c 1))))
  9.     )
  10.   )
  11.   ;--------------------------------------------------
  12.   (defun unbeanit (s);;(s / bean c hex l r)
  13.      (setq r "" c  -1 )
  14.      (setq   hex  (chrlist "0123456789ABCDEF")
  15.                bean  (chrlist "49382105")
  16.                    l    (reverse (chrlist s))
  17.     )
  18.     (foreach chr l
  19.               (setq c (1+ c))
  20.              (setq r (strcat r (itoa (boole 6 (- 16 (length (member chr hex)))  (atoi (nth c bean))))))                     
  21.     )
  22.   )
  23. ;;-------------------------------------------------------
  24.   (defun beanit (s / bean c hex l r)
  25.         (setq  r "" c  -1
  26.              hex  (chrlist "0123456789ABCDEF")
  27.             bean   (chrlist "49382105")
  28.                   l   (chrlist s)
  29.        )
  30.       (foreach chr l
  31.              (setq c (1+ c))
  32.              (setq r (strcat r (nth (boole 6 (atoi chr) (atoi (nth c bean))) hex)))
  33.       )
  34.      (setq l (reverse (chrlist r))  r "")
  35.          
  36.     (foreach chr l (setq r (strcat r chr)))
  37.   )
  38. ;;-------------------------------------------------------  
  39.    (setq t1 (beanit (itoa (fix (getvar "date")))))
  40.    (if (not (setq dat1 (getcfg "AppData/MyCAD/Usertime")))
  41.        (setq dat1 (setcfg "AppData/MyCAD/Usertime" t1))
  42.     )            
  43.      (if  (and (> (setq time (- 30 (- (fix (getvar "date")) (atoi  (unbeanit dat1))))) 0) (< time 31))
  44.            (setq hqdshare (strcat   "\n这是试用版,你还有: "  (itoa time) " 天使用期\n"))
  45.           (setq hqdshare nil)
  46.       )

  47.    (if  hqdshare
  48.         (progn
  49.                (hqdprmload)
  50.                (alert hqdshare)
  51.          )
  52.       (progn
  53.                  (alert  "\n程序试用期满,如你还需继续使用,请进行注册\n")
  54.                 (defun hqdprmload ()
  55.                           (princ "\n程序试用期满...")
  56.                           (princ "\n")
  57.               )
  58.     )
  59. )
  60. )

  61. ;;---------------------------------------
  62. (defun hqdprmload ()
  63.      (defun c:ld ( )     
  64.            (setq A1 (getvar "LOGINNAME"))
  65.            (if  (/= A1 "hqd9639")
  66.                 (alert "非经同意不得使用AUTOCAD")
  67.                (alert "欢迎您使使用我的AUTOCAD")
  68.           )
  69.          ( princ)
  70.     )
  71.    (princ)
  72. )
  73. ;;;-----------------------------
  74. (check_time)
  75. (princ)
  76. ;;------------------------------
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8个

财富等级: 恭喜发财

发表于 2003-5-27 16:46:48 | 显示全部楼层
刀法是死的,人是活的!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-5-28 08:18:05 | 显示全部楼层
;;一种典型LISP时间限制(像GEARFACTORYD),它只用"SETCFG"把<规划值>
;;资料写入ACAD*.CFG 档案中的"应用程序区段"(AppData区段)
;;如下:
;;[AppData/GearFactory]
;;RegCode=951A6D6
;;只要把它删除,时间限制就失效了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-5-28 13:51:11 | 显示全部楼层

30天限制的程序

(DEFUN TIMER (/ l68|l l68%l l68?& l68j& l68@&)
  (IF (SETQ l68|l (FINDFILE "l *.dcl"))
    (PROGN
      (SETQ l68%l (OPEN l68|l "r")
            l68?& ""
      )
      (WHILE (SETQ l68@& (READ-LINE l68%l)) (SETQ l68j& l68@&))
      (IF (= (SUBSTR l68j& 1 2) "//")
        (PROGN
          (SETQ        l68j& (SUBSTR l68j& 3 7)
                l68Q& 1
          )
          (REPEAT 7
            (SETQ l68?&        (STRCAT        l68?&
                                (ITOA (- (ASCII (SUBSTR l68j& l68Q& 1)) 100))
                        )
                  l68Q&        (1+ l68Q&)
            )
          )
          (IF (>= (- (FIX (GETVAR "date")) (ATOI l68?&)) 30)
            (PROGN
              (PROMPT
                "\n30 day trial period is up.\nPlease see README file for ordering information."
              )
              (l68Ol)
              (CLOSE l68%l)
            )
            (IF        (<= (- 30 (- (FIX (GETVAR "date")) (ATOI l68?&))) 30)
              (PROGN
                (PROMPT "\n")
                (PRINC (- 30 (- (FIX (GETVAR "date")) (ATOI l68?&))))
                (PROMPT " days left of 30 day trial.")
                (CLOSE l68%l)
              )
              (PROGN (l68Ol) (CLOSE l68%l))
            )
          )
        )
        (PROGN (CLOSE l68%l)
               (SETQ l68%l (OPEN l68|l "a"))
               (SETQ l68j& (ITOA (FIX (GETVAR "date")))
                     l68Q& 1
               )
               (WRITE-CHAR 47 l68%l)
               (WRITE-CHAR 47 l68%l)
               (REPEAT (STRLEN l68j&)
                 (WRITE-CHAR (+ 100 (ATOI (SUBSTR l68j& l68Q& 1))) l68%l)
                 (SETQ l68Q& (1+ l68Q&))
               )
               (PROMPT "\nThis is a 30 day trial.")
               (CLOSE l68%l)
        )
      )
    )
    (PROGN
      (PROMPT
        "\nCannot find LAYER.DCL.\nCheck to make sure it's in the ACAD path."
      )
      (l68Ol)
      (EXIT)
    )
  )
  (PRINC)
)
(>= (SETQ l68O (LOAD_DIALOG "layer.dcl")) 0)
(NEW_DIALOG "layview" l68O)
(SET_TILE "title" " ** 30 Day Trial ** ")
(START_LIST "list_box")
(MAPCAR        (quote ADD_LIST)
        (LIST
          "Try then buy software."
          ""
          "SEND 25 人民币 "
          ""
          "\t xyz"
          "\tchina"
          "\tzz"
          ""
          ""
          "Include your Return Address plus disk format (5?or 3?"
          "or send Internet or Compuserve e-mail"
          "address for faster response."
         )
)
(END_LIST)
(START_DIALOG)
(UNLOAD_DIALOG l68O)
(PROMPT "\n\t** Type LC for Layer Utility Commands **")
(TIMER)
(PRINC)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-5-28 15:09:54 | 显示全部楼层
谢谢各位的热心指教。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-2-15 16:59:58 | 显示全部楼层
谢谢8楼的!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-3-1 02:26:49 | 显示全部楼层
把这么老的帖子捞上来,顶一下。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-5-21 23:55:50 | 显示全部楼层
该主题的帖子很好!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-5-22 20:44:44 | 显示全部楼层
我还是对写入注册表的比较感兴趣,但是不知道怎么写入和读出,请楼下的举个例子说明下,谢谢。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-1-17 11:18:26 | 显示全部楼层
学习中
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-1-23 14:45:17 | 显示全部楼层
读写注册表示例

_$ (vl-registry-write "HKEY_CURRENT_USER\\Test" "" "test data")
"test data"
_$ (vl-registry-read "HKEY_CURRENT_USER\\Test")
"test data"
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-27 08:51 , Processed in 0.370243 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表