yf__lx 发表于 2015-2-22 19:30:38

如何在LISP程序中从粘贴板复制数据或复制数据到粘贴板

如何在LISP程序中从粘贴板复制数据或复制数据到粘贴板?
我知道DOSLIB中有dos_clipboard可实现,但不知具体是怎么实现的。


http://bbs.mjtd.com/xwb/images/bgimg/icon_logo.png 该贴已经同步到 yf__lx的微博

tranney 发表于 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)
)
;向系统剪贴板写入文字内容 结束

USER2128 发表于 2015-2-22 20:06:24

dos_clipboard
返回或者设置Windows粘贴板文本字符串.


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

语法
(dos_clipboard )

参数
string

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

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

如果错误:nil

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

"Hello World!"



命令: (dos_clipboard)

"Hello World!"


yf__lx 发表于 2015-2-23 08:15:11

USER2128 发表于 2015-2-22 20:06 static/image/common/back.gif
dos_clipboard
返回或者设置Windows粘贴板文本字符串.



多谢你的答复,我也知道dos_clipboard如何使用,我的意思是如果不借助DOSLIB或其他第三方函数库,仅用LISP自身的函数编程得到该功能

Andyhon 发表于 2015-2-23 08:57:15

Ref:
http://bbs.mjtd.com/thread-80317-1-1.html

yf__lx 发表于 2015-2-23 09:39:53

多谢你的指教,我用clipboard搜索没有找到相关内容,看来下次要中英文都试试

Gu_xl 发表于 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
页: [1]
查看完整版本: 如何在LISP程序中从粘贴板复制数据或复制数据到粘贴板