找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 5424|回复: 9

[LISP程序]:Vlisp 读写剪贴板文字

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-12-20 22:55:27 | 显示全部楼层 |阅读模式

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

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

×
以前 xdapi 第一次实现了CAD 中读写剪贴板,现在 Vlisp 也可以做到了:)

  1. ;;读剪贴板文字
  2. (defun xdl-getcliptext (/ ieobj str)
  3.   (setq
  4.     ieobj (vlax-get-or-create-object "Internetexplorer.application")
  5.   )
  6.   (vlax-invoke ieobj 'navigate "about:blank")
  7.   (setq        str
  8.          (vlax-invoke
  9.            (vlax-get (vlax-get (vlax-get ieobj 'document) 'parentwindow)
  10.                      'clipboarddata
  11.            )
  12.            'getdata
  13.            "text"
  14.          )
  15.   )
  16.   (vlax-release-object ieobj)
  17.   str
  18. )
  19. ;;往剪贴板写文字
  20. (defun xdl-setcliptext (str / ieobj)
  21.   (setq
  22.     ieobj (vlax-get-or-create-object "Internetexplorer.application")
  23.   )
  24.   (vlax-invoke ieobj 'navigate "about:blank")
  25.   (vlax-invoke
  26.     (vlax-get (vlax-get (vlax-get ieobj 'document) 'parentwindow)
  27.               'clipboarddata
  28.     )
  29.     'setdata
  30.     "text"
  31.     str
  32.   )
  33.   (vlax-release-object ieobj)
  34. )

本帖被以下淘专辑推荐:

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

使用道具 举报

已领礼包: 24个

财富等级: 恭喜发财

发表于 2005-12-24 17:55:07 | 显示全部楼层
eachy的程序有点小问题,可能是论坛显示的问题。
出错语句是(vlax-invoke ieobj 'navigate "about :blank")
"about"与":blank"间不能有空格,否则出错!

在原程序
(vlax-invoke ieobj 'navigate "about :blank")
语句后加入
(vlax-put-property ieobj "visible" :vlax-true)
就可以看到"语法错误"信息

eachy斑竹还有其他几个函数,生成一个空网页的方法,也存在类似的问题

补充一个清空剪贴板文字的函数

  1. ;;清空剪贴板内文字
  2. (defun xdl-clscliptext (/ ieobj)
  3.   (setq
  4.     ieobj (vlax-get-or-create-object "Internetexplorer.application")
  5.   )
  6.   (vlax-invoke ieobj 'navigate "about:blank") ;about与:blank间无空格
  7.   (vlax-invoke
  8.            (vlax-get (vlax-get (vlax-get ieobj 'document) 'parentwindow)
  9.                      'clipboarddata
  10.            )
  11.            'clearData
  12.            "text"   
  13.   )
  14.   (vlax-release-object ieobj)
  15. )


相关内容可以到msdn中查找
http://msdn.microsoft.com/librar ... ference/objects.asp
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-30 19:29:50 | 显示全部楼层
一定有更好的办法吧,我觉得
读写剪贴板文字用这个办法太小题大做了
调用ie会不会使速度大大降下来,应该也用暂用好多内存的,所以不是好办法.
我想了一个读剪贴板好的笨办法:
(defun c:rp()
   (command "_pasteclip")
   (princ (cdr(assoc 1(entget (entlast)))))
  )
不过写的方法还没有想出来
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 24个

财富等级: 恭喜发财

发表于 2006-1-1 11:45:41 | 显示全部楼层

To wujimmy:

你的方法虽提供了另一种解决问题的方式,但有极大的局限性。
对于纯文本完全没问题,但对于OLE就有点力不从心,也就是说无法从含格式的文本或图文并茂中提取文本。比如将word中复制的文本提取出来。
生成一个空网页,但不显示出来并不会影响速度,你可以试试,基本感觉不到。就占用内存的问题,我觉得只要读取完剪贴板后及时realese-object应该就可以了。
PS:看了你最近不少程序,学到不少东西,今后多多交流哈!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2007-1-3 21:16:06 | 显示全部楼层
;;往剪贴板读写文字
(defun xdl-setcliptext (str / ieobj)
  (setq
    ieobj (vlax-get-or-create-object "Internetexplorer.application")
  )
  (vlax-invoke ieobj 'navigate "about :blank")
  (vlax-invoke
    (vlax-get (vlax-get (vlax-get ieobj 'document) 'parentwindow)
              'clipboarddata
    )
    'setdata
    "text"
    str
  )
  (vlax-release-object ieobj)
)

**********************************************************************************

;;往剪贴板读写文字测试无法通过,
按三楼方法去掉空格也无法通过.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-1-15 19:09:48 | 显示全部楼层
如果有打开的IE窗口,会覆盖掉当前IE显示的内容,而且速度似乎不快
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-18 23:12 , Processed in 0.448052 second(s), 51 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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