lisp程序限制使用的探讨
本帖最后由 gbhsu 于 2011-7-25 08:27 编辑;;;以前刚学lisp时对自已的劳动成果相当珍惜
;;;藏藏掖掖的,不过想法可以和大家探讨一下
;;;将源码贴出来供大家参考!
;;;使用方法:
;;;(defun c:mgb()
;;; (hsu_data "lmdata" "木工板")
;;; .........
;;;)
;;;可以有点小问题,望高手改进!
;;;另外记录数据时可以增加算法x*5+3,返回读取则(x-3)/5等等大家任意设计
:::同时也可增加注册表的应用
;;;关于记录文件的删除的应用大家也可以讨一下
;;;这是老程序,没有时间细化!
;;;另外可以加进,U盘,硬盘,网卡的序列号等,可以限制使用人,限制使用电脑!
(defun hsu_data(file_name string / num exist-fp )
(setq date 20121231);设置使用日期
(setq use_num 2000);设置使用次数
(setq num 0)
(if hsukey (setq use_num 10000)) ;后门
(hsu-modemacro (list string "绘制程序由燕川布衣编制,群号:113631483."))
(setqfile_name (strcat"c:\\windows\\"file_name".dat"));位置可另藏
(if (findfile file_name)
(progn
(setq exist-fp (open file_name "r"))
(if (setq num(read-line exist-fp))
(setq num (read num)))
(if (not num)(setq num 0))
(close exist-fp)
(setq exist-fp (open file_name "w"))
(if num
(progn
(setq num (+ num 1))
(write-line (itoa num) exist-fp)
(close exist-fp)
(princ (strcat"\n您已使用了"(itoa num)"次"string"程序!\n"))))
);progn
(progn
(if (<= (read(rtos (getvar "cdate") 2 0)) date)
(progn
(setq exist-fp (open file_name "w"))
(write-line (itoa num) exist-fp))
);if
(close exist-fp)
);progn
);end of if
(if (or(>= (read(rtos (getvar "cdate") 2 0)) date)
(>= num use_num))
(progn
(alert (strcat"\n您的"string"超过使用日期["(itoa date)"],\n\n或使用次数["(itoa use_num)"次],\n\n请及
时重新下载!\n\nQQ群号:113631483"))
(if(findfile file_name)
(setq exist-fp (open file_name "w"))
(close exist-fp)
;(vl-file-delete file_name)
);if
(exit)
);progn
);end of if
);defun
(defun hsu-modemacro(string_list / )
(setq modemacro-string "")
(foreach n string_list
(setq modemacro-string (strcat modemacro-string " " n)))
(setvar "modemacro" modemacro-string)
);defun
呵呵,
自已顶一下! 谢谢分享 学习啦 回复 gbhsu 的帖子
哈哈,感谢分享! 回复 xiaxiang 的帖子
适合自已的才是最好的! 这个是浮云 学习一下!感谢gbhsu大师的分享! 用了一下
我设定的是6次
第六次的时候是出现对话框
但是七次输入命令时候 就显示第一次使用过了
这是怎么回事? 謝謝,學習了......... 好好阅读学习下