用VB制作多次剪贴板
#1?牐犐杓扑悸?
?牐?1.这个剪贴板必须在屏幕的上方才方便使用,为此,我们使用Win32API函数中的SetWinDowPos函数,这个函数可以设置窗体的XYZ轴的位置和大小等。
?牐?2.必须随时侦测剪贴板的动向,为了能让更多初学者也能看懂,这里使用Timer控件定时监控,并采用ListBox控件储存从剪贴板得来的数据。
?牐?3.和Word一样,这里也采用工具栏按钮式的剪贴板,采用Toolbar控件,每次从剪贴板得来数据以后清空剪贴板,等到需要用的时候单击相应的按钮即可把内容复制到剪贴板,再在字处理器中粘贴即可(因为这毕竟不是Word的内部工具)。
#1?牐牽丶柚?
?牐犗虼疤逯刑砑右桓鯨istBox控件,把它的Visible属性设为False;一个Timer控件,Interval属性设为1000;一个ToolBar控件,Align属性设为0,便于拖动位置。TextAlign属性设为1,令文本显示在按钮中间,在属性页中把它的“样式”设为1,成为Windows98风格的工具栏;两个CommandButton控件,Caption属性分别为“全部清空”和“清空第N个”;一个TextBox控件,用来输入要清除的条目的序号。完成的界面如图所示。(^19020503a^)
#1?牐牬肴缦拢?
?牐燩rivate Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long ByVal hWndInsertAfter As Long,ByVal x As Long,ByVal y As Long ByVal cx As Long,ByVal cy As Long,ByVal wFlags As Long)As Long
?牐牐?声明所用的SetWindowPosAPI函数,hwnd是窗体的句柄,hWndInsertAfter是窗体在屏幕的Z轴上的相对位置,X是窗体最左边的位置,Y是窗体最顶端的位置,cx、cy反之,wFlags是对窗体的大小、XYZ轴位置进行设置的显示标志,该函数的返回值是函数调用是否成功的标志(0表示调用失败)
?牐燙onst SWP_NOMOVE = &H2
?牐燙onst SWP_NOSIZE = &H1
?牐燙onst HWND_TOPMOST = -1
?牐牐Фㄒ宄J闹?
?牐燚im cbtext As String
?牐燚im i,j As Integer
?牐燚im wd As Long
?牐燩rivate Sub Command1_Click()
?牐燜or j = List1.ListCount To 1 Step -1
?牐燣ist1.RemoveItem j - 1
?牐燭oolbar1.Buttons.Remove(j)??
?牐燦ext j '清空所有的条目
?牐爄 = 0
?牐燾btext = "" '初始化变量
?牐燛nd Sub
?牐燩rivate Sub Command2_Click?煟?
?牐燣ist1.RemoveItem Val(Text1.Text)- 1 '移除索引号对应的条目(索引号从0开始)
?牐燭oolbar1.Buttons.Remove Val (Text1.Text)'移除对应的按钮
?牐燭ext1.Text = ""
?牐燛nd Sub
?牐燩rivate Sub Form_Load()?煟?
?牐爓d = SetWindowPos(Form1.hwnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE Or SWP_NOSIZE) '用SetWindowPos函数把窗体固定,HWND_TOPMOST是指定窗体在屏幕的所有窗体Z轴最上方,SWP_NOMOVE和SWP_NOSIZE用OR连接,表示不允许移动窗口的X/Y/Z轴坐标和调整窗口大小
?牐燛nd Sub
?牐燩rivate Sub Timer1_Timer()?煟?
?牐燨n Error Resume Next
?牐營f Clipboard.GetText=cbtext Or Clipboard.GetText=""Then'校验剪贴板的文字是否与前一次的重复且是否为空
?牐燛xit Sub
?牐燛nd If
?牐燜or j = 0 To List1.ListCount - 1
?牐營f Clipboard.GetText = List1.List(j)Then Exit Sub'校验是否有重复的,如有则不必再次复制
?牐燦ext j
?牐燾btext = Clipboard.GetText '获得剪贴板的文字
?牐爄 = i + 1
?牐燭oolbar1.Buttons.Add i,,Left(cbtext,10)+ "..." '把新复制到剪贴板的内容的前10个字符(相当于中文5个字符)作为摘要,添加到工具栏的新按钮的标题上
?牐燣ist1.AddItem cbtext,i - 1'把新获得的内容通过List控件的AddItem方法添加进去
?牐燜orm1.Height = 1000*(i + 1)/4 + 1000'设置窗体高度
?牐燙lipboard.Clear '清空剪贴板
?牐燛nd Sub
?牐燩rivate Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)??
?牐燙lipboard.Clear
?牐燙lipboard.SetText List1.List (Button.Index - 1)'把相应条目复制到剪贴板
?牐燛nd Sub