刘大叔 发表于 2024-3-24 11:36:46

lsp加载时读取注册表值

本帖最后由 刘大叔 于 2024-3-27 00:56 编辑


【提问内容】
想实现如下操作:
lsp A加载时,先读取电脑注册表中固定位置的数据值,读取到了,正常加载,读取不到,弹出对话框:“lsp A没有正确加载”。
然后,这个lsp A会连同其他lsp程序打包成fas,或lsp A被置入其他lsp程序的开头,来判断是否加载。
要求基本就上上面的,需要lsp A的源码,,注册表的位置,读取的值还没想好,一起帮我找个位置呗~



XJ6019的源码见二楼。

运行后发现不行,认真看了代码,应该是读取不到,停止运行,于是修改代码如下:

;(defun C:NM (/ selasxk zhucebiao)
(setq zhucebiao "HKEY_CURRENT_USER\\SOFTWARE\\XXXSOFT\\Config");;定义注册表路径,XXXXSOFT\\Config为自定义注册表具体位置
(if (null (vl-registry-read zhucebiao "Key" )) ;;如果这个注册表位置读取不到
    (progn
      (vl-exit-with-error (alert "\n文件lisp A没有正确加载"));;则程序停止运行,并弹出对话框
      ;(setq selasxk (vl-registry-write zhucebiao "Key" "text01")) ;就将"text01"这个测试字符串写入注册表,自己确定这里是否启用(这句是XJ6019大哥写的,我没有删除)
    )
    (progn
      ;(setq selasxk (vl-registry-read zhucebiao "Key" ));如果注册表存在这个key,就直接读取(这里已被注释,不需要运行)
            ;(vl-exit-with-error(alert "\n指定函数加载失败!请重新加载!")) ;;已被注释,不需要运行(读取不到停止运行,读到了就继续运行)
    )      
)
(princ selasxk);验证结果
;)


;;本人系lisp婴儿,特别感谢论坛各路大哥们的帮助!
;;每次求助均不白嫖,明经币奉上!

感谢XJ6019的帮助,已设置最佳答案!:handshake


xj6019 发表于 2024-3-24 11:36:47

本帖最后由 xj6019 于 2024-3-24 12:25 编辑

测试一下看看

uualice2020 发表于 2024-3-24 14:32:19

vl-registry-read   vl-registry-write

ssyfeng 发表于 2024-3-24 17:23:18

这种应该不难实现,但也容易被破除限制

刘大叔 发表于 2024-3-27 00:50:09

xj6019 发表于 2024-3-24 12:22
测试一下看看

点赞!
虽有点儿瑕疵,我修改了一点点,可以达到我的预想,明经币奉上!有空的话就再帮我看看呗。:lol
页: [1]
查看完整版本: lsp加载时读取注册表值