不用电脑的剪切板,用vb的代码编写一个剪切板,如果编了二个剪切板,可以同时剪切不同的内容,望各位大哥,大姐帮忙,谢谢!!

解决方案 »

  1.   

    这个有意义吗?颠倒一下剪切和粘贴顺序不能解决吗?或者定义一个variant变量暂存一下
      

  2.   

    做出来是肯定可以的,比如写一个NT服务程序,作为你定义的剪切版交换的桥。
    然后写一个类或API函数作为与那个NT服务程序沟通的桥,当你需要读写你的
    剪切板内容的时候,调用你的API或类来处理不就可以了。但是这么做我认为
    意义不大。
      

  3.   

    下面是具体的代码:
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Const WM_PASTE = &H302Private Sub Command1_Click()
    Clipboard.SetData LoadPicture("c:\1.bmp")   'Clipboard就是剪切板
    SendMessage RichTextBox1.hwnd, WM_PASTE, ByVal 0&, ByVal 0& '
    End Sub
    各位哥哥,姐姐,你们说不用剪切板改怎么做,请你们写出具体代码,再次感谢各位哥哥,姐姐!!
      

  4.   

    凌云Delphi剪切板增强型 v8.9 源代码这是delphi的
      

  5.   

    17楼的大哥,怎么定义一个variant变量,怎么暂存,希望你能给出具体代码,谢谢!!
      

  6.   

    这100分我来拿吧:)简单写了写,代码如下:Option ExplicitPrivate Declare Function SetClipboardViewer Lib "user32.dll" ( _
         ByVal hwnd As Long) As Long
    Private Const WM_DRAWCLIPBOARD As Long = &H308Dim WithEvents objSC As cSubclassPrivate Sub Command1_Click()
        Me.Tag = 1
        Clipboard.Clear
        Clipboard.SetText Text1.Text
        Me.Tag = 0
    End SubPrivate Sub Command2_Click()
        Me.Tag = 1
        Clipboard.Clear
        Clipboard.SetText Text2.Text
        Me.Tag = 0
    End SubPrivate Sub Form_Load()
        Call SetClipboardViewer(Me.hwnd)                    '添加本句柄到剪贴板查看器列表
        Set objSC = New cSubclass
        
        objSC.AddWindowMsgs Me.hwnd
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        objSC.DeleteWindowMsg Me.hwnd
        Set objSC = Nothing
    End SubPrivate Sub objSC_MsgCome(ByVal bBefore As Boolean, bHandled As Boolean, lReturn As Long, lng_hWnd As Long, uMsg As Long, wParam As Long, lParam As Long)
        If bBefore Then
            Select Case uMsg
                Case WM_DRAWCLIPBOARD                               '剪贴板被改变
                    If Clipboard.GetFormat(vbCFText) And Me.Tag <> "1" Then         '只对文本进行处理,自己复制时不处理
                        If Option1.Value Then Text1.Text = Clipboard.GetText
                        If Option2.Value Then Text2.Text = Clipboard.GetText
                    End If
            End Select
        End If
    End Sub
    界面:工程打包下载:http://www.m5home.com/blog/article.asp?id=321
      

  7.   

    23楼的马哥你好,分都给你,我还想麻烦你,给改改,让它能剪切图片!!马哥,你的水平太高了,我和你比差的远了 .希望你具体的解释这一句Me.Tag = 1是什么意思!
      

  8.   

    Option Explicit
    '剪贴板监视与管理示例代码
    'BY 嗷嗷叫的老马
    'http://www.m5home.comPrivate Declare Function SetClipboardViewer Lib "user32.dll" ( _
         ByVal hwnd As Long) As Long
    Private Const WM_DRAWCLIPBOARD As Long = &H308Dim WithEvents objSC As cSubclass
    Dim objSave1 As StdPicture, objSave2 As StdPicturePrivate Sub Command1_Click()
        Me.Tag = 1
        Clipboard.Clear
        Clipboard.SetData objSave1
        Me.Tag = 0
    End SubPrivate Sub Command2_Click()
        Me.Tag = 1
        Clipboard.Clear
        Clipboard.SetData objSave2
        Me.Tag = 0
    End SubPrivate Sub Form_Load()
        Call SetClipboardViewer(Me.hwnd)                    '添加本句柄到剪贴板查看器列表
        Set objSC = New cSubclass
        
        objSC.AddWindowMsgs Me.hwnd
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        objSC.DeleteWindowMsg Me.hwnd
        Set objSC = Nothing
    End SubPrivate Sub objSC_MsgCome(ByVal bBefore As Boolean, bHandled As Boolean, lReturn As Long, lng_hWnd As Long, uMsg As Long, wParam As Long, lParam As Long)
        If bBefore Then
            Select Case uMsg
                Case WM_DRAWCLIPBOARD                               '剪贴板被改变
                    If Clipboard.GetFormat(vbCFText) = False And Me.Tag <> "1" Then        '只对文本进行处理,自己复制时不处理
                        If Option1.Value Then Set objSave1 = Clipboard.GetData
                        If Option2.Value Then Set objSave2 = Clipboard.GetData
                    End If
            End Select
        End If
    End Sub
    用法还是一样,不过界面的文本框无作用了.Me.Tag = 1,我是懒得再声明一个变量.....直接用这个附加属性来当锁,以防自己在使用剪贴板时又被自己给拦截了(注意If Clipboard.GetFormat(vbCFText) = False And Me.Tag <> "1" Then这句)如果没这个锁,功能会混乱....虽然还是可以通过写别的代码来处理,但不如加个锁方便.