在VFP中实现对剪贴板文本的动态监控
2000-08-14 16:29:47
平时在上网或者是进行电子刊物的阅读时,我们经常会对屏幕上的一些资料感兴趣。好的东西当然不能让它闲着,总得想办法把它们留下来。常见的做法是反复复制、粘贴,这样一来,连贯的阅读思路就这样被打断了,好遗憾!为了解决此问题,笔者设计了一个程序,在你看到感兴趣的题材,你只需要将内容拷入剪贴板,其它的工作全由该程序在后台替你完成。在你阅读完之后,你再对感兴趣的内容进行整理。
在VFP中,有一个平时不被人们所注意的系统变量:—CLIPTEXT,它记录着目前剪贴板上的文本信息,并且它和系统剪贴板是同步更新的。要随时掌握剪贴板上目前的文字内容,我们自然会利用VFP中的计时器来实现该功能:当计时器产生TIMER事件时,我们便去访问—CLIPTEXT变量的值,如果它的值有了变化,我们便把变化了的内容写入一临时文件内,有了这些认识后,设计上面讲的程序便不是难事了。
一、新建表单和控件
在VFP中新建一表单Form1,并在表单上按表1建立控件。
另外,为了验证剪贴板上的内容是否变化,还得在表单上新建一属性oldcontent来记录上一次剪贴板的内容。同样,为了记录你拷贝的次数,详细地反映出剪贴板上内容变化的过程,在Form1中加入一属性copy—times。
二、 为控件添加代码
1.在Form1的Init事件中加入下述代码:
*为了记录剪贴板的内容变化,必须初始化oldcontent为非空
if empty(—CLIPTEXT)
thisform.oldcontent=″Hello″
else
thisform.oldcontent=—CLIPTEXT
endi
thisform.copy—times=1
2.在Timer1的Timer事件中加入下述代码:
/由于该程序是每一秒检查一下剪贴板的内容,为了不重复记录剪贴板的内容,必须在每一次TIMER事件中验证剪贴板的内容是否变化,只有内容发生变化时,才对编辑框的内容进行更新。/
newcontent=—CLIPTEXT
separate=repl(′*′,5)+″第″+alltr(str(thisform.copy—times))+″次拷贝的内容如下:″+repl(′*′,5)
if substr(newcontent,1,2)=substr(thisform.oldcontent,1,2)
*如果剪贴板的内容没变,则返回
return
else
*剪贴板的内容改变,更新编辑框的内容
thisform.edit1.value=thisform.edit1.value+chr(13)+separate+chr(13)+newcontent+repl(chr(13),2)
endi
thisform.oldcontent=newcontent
thisform.copy_times=thisform.copy—times+1
3.在Command1的click事件中加入下述代码:
thisform.refresh
filename=′tempfile.doc′
*如果文件存在,则用读写方式(用12表示)打开
if file(filename)
handle=fopen(filename,12)
else
handle=fcreate(filename)
endi
if handle=-1
wait window ″打开文件名: ″+filename+″失败!″
retu
endi
*将文件指针移至文件尾
=fseek(handle,0,2)
=fwrite(handle,thisform.edit1.value)
*关闭文件
fclose(handle)
好,经过上述过程后,你便大功告成。平时你所需做的,就是经常对tempfile.doc文件的内容进行整理,因为它的体积是在不断地增大。
表1
控件类型 | 控件名称 | 控件属性 | 标签 | Label1 | Caption=当前所记录的剪贴板内容值 | 编辑框 | Edit1 | | 按钮 | Command1 | Caption=存盘 | 计时器 | Timer1 | Interval=1000 |
摘自《赛迪网》 周鸣扬/文 |
404 Not Found
404 Not Found
nginx
|
|