现在的位置: 首页 > 综合 > 正文

用Win32::Clipboard模块来操作Windows的剪切板

2012年04月25日 ⁄ 综合 ⁄ 共 840字 ⁄ 字号 评论关闭
每天工作都要监视某些网页,一但这些网页有更新,就做相应的工作。
当然不能每天人工去查看每个网页了!于是我写了一个Perl脚本去自动检查。每天上班运行一下,就知道是否有更新;有更新的话,自动把内容拷贝下来,按相应的格式存到特定的文件里。
但有的时候,我需要直接把这个内容复制到其它地方,比如邮件。我同样用Perl脚本实现了这个功能:在完成了自动检查后,符合情况就自动复制到Windows的剪切板。
我觉得这里有三点值得总结一下:
1) 用Win32::Clipboard实现与Windows剪切板互动
使用这个模板,可以在命令行里直接把内容拷贝到剪切板。
use Win32::Clipboard;$CLIP = Win32::Clipboard();
print “Clipboard contains: “, $CLIP->Get(), “\n”;
$CLIP->Set(“some text to copy into the clipboard”);
$CLIP->Empty();
$CLIP->WaitForChange();
print “Clipboard has changed!\n”;
不过这玩意在Cygwin里死活装不上,只能在Strawberry Perl里用了~~
2) 让cmd或是MSYS输出中文
在Windows下,不管是cmd还是MSYS,如果直接在里面打印出中文,几乎都会乱码;而在cmd或是MSYS下,用Win32::Clipboard拷贝东西到剪切板,也同样会乱码。
需要用类似于下面的方法来改进编码的问题:
use Encode;
$infor = encode(“gbk”, decode(“UTF-8″, $_));
print $infor;
3) 响应用户的确定操作
当把内容复制到剪切板,则输出一行提示,让用户知道复制已经完成,并等待用户输入任意的一个键以示确认,再继续。这个功能很简单,可以用这个语句轻松地实现:
<STDIN>
这样的一个不起眼的小工具,却省下了我一大串繁琐的工作(比如打开文件、判断、复制内容),不亦乐乎!

抱歉!评论已关闭.