明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1191|回复: 6

[已解答] 如何在LISP程序中从粘贴板复制数据或复制数据到粘贴板

[复制链接]
发表于 2015-2-22 19:30:38 | 显示全部楼层 |阅读模式
如何在LISP程序中从粘贴板复制数据或复制数据到粘贴板?
我知道DOSLIB中有dos_clipboard可实现,但不知具体是怎么实现的。


该贴已经同步到 yf__lx的微博
发表于 2015-3-2 23:43:57 | 显示全部楼层
给你段代码参考,af复制到内存,aff粘贴

;向系统剪贴板写入文字内容 开始
(vl-load-com)
(defun ZML-CLIP-SETSTRING (STR / HTML RESULT)
  (and (= (type STR) 'STR)
       (setq HTML (vlax-create-object "htmlfile"))
       (setq RESULT (vlax-invoke
                      (vlax-get        (vlax-get HTML 'PARENTWINDOW)
                                'CLIPBOARDDATA
                      )
                      'SETDATA
                      "Text"
                      STR
                    )
       )
       (vlax-release-object HTML)
  )
)
;;;=================================================================*
(defun c:tmbz()(c:af)(c:mini_index_name))
mini_index_name
;;函数测试
(defun c:af (/ txtss txtcon)
  (setq txtss nil)
        (while (= nil txtss)
        (setq txtss (entsel "\n请点取需要复制到剪切板的文字:"))
        (if (/= "TEXT" (cdr (assoc 0 (entget (car txtss)))))
          (progn
            (setq txtss nil)
            (princ "\n没有点到文字,请重选。\n")
          )
          (princ "\n文字已复制到剪切板,可以直接粘贴了!")
        )
      )
  (setq txtcon (cdr (assoc 1 (entget (car txtss)))))
  (ZML-CLIP-SETSTRING txtcon)
  (setq txtss nil)
  (princ)
)
;;;
(defun c:aff (/ html)
  (setq HTML (vlax-create-object "htmlfile"))
  (vla-put-textstring (vlax-ename->vla-object (car (entsel "\n请点取需要粘贴到剪切板内容的文字:")))
                      (vlax-invoke (vlax-get (vlax-get HTML 'PARENTWINDOW)
                                             'CLIPBOARDDATA
                                   ) 'GETDATA "Text"
                      )
  )
  (princ)
)
;向系统剪贴板写入文字内容 结束
回复 支持 1 反对 0

使用道具 举报

发表于 2015-2-22 20:06:24 | 显示全部楼层
dos_clipboard
返回或者设置Windows粘贴板文本字符串.


--------------------------------------------------------------------------------

语法
(dos_clipboard [string])

参数
string

一个需要设置到Windows粘贴板中的文本字符串.

返回值:
如果成功:该字符串.

如果错误:nil

范例
命令: (dos_clipboard "Hello World!")

"Hello World!"



命令: (dos_clipboard)

"Hello World!"


 楼主| 发表于 2015-2-23 08:15:11 | 显示全部楼层
USER2128 发表于 2015-2-22 20:06
dos_clipboard
返回或者设置Windows粘贴板文本字符串.

多谢你的答复,我也知道dos_clipboard如何使用,我的意思是如果不借助DOSLIB或其他第三方函数库,仅用LISP自身的函数编程得到该功能
发表于 2015-2-23 08:57:15 | 显示全部楼层
 楼主| 发表于 2015-2-23 09:39:53 | 显示全部楼层
多谢你的指教,我用clipboard搜索没有找到相关内容,看来下次要中英文都试试
发表于 2015-3-3 09:15:17 | 显示全部楼层
加载XLRX_API:
XLRX-GetClipBoardText
   功能:返回粘贴板中的文本
   语法: (XLRX-GetClipBoardText)
     参数:
       无
    返回值: 成功返回字符串 ,否则返回 nil

XLRX-SetClipBoardText
   功能:设置粘贴板中的文本
   语法: (XLRX-SetClipBoardText string)
     参数:
       string 字符串
    返回值: 成功返回T ,否则返回 nil
   功能:清空粘贴板
   语法: (XLRX-SetClipBoardText)
     参数:
       无
    返回值: 成功返回T ,否则返回 nil
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-23 12:13 , Processed in 0.156316 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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