举例说明:运行一个VB程序,意在获取IE窗口的句柄,然后打开论坛发贴子的窗口,将光标定位到了文章内容的文本框内,此时又打开了一个文本文件,复制了一些文本,这时再用那个VB程序将剪贴板中的文本粘贴到论坛发贴的文本框中。  
请问,在用VB程序粘贴时:  
1.怎样确保将内容粘贴到IE窗口中,而不是文本文件窗口中  
2.怎样判断发贴窗口的光标刚才是否定位在文本框中  
3.怎样将剪贴板中的内容粘贴到那个文本框中
谢谢!

解决方案 »

  1.   

    读取粘贴板数据如下:
    Dim buf As String
      Dim bData() As Byte
      Dim hMem As Long
      Dim lSize As Long
      Dim lPtr As Long
    hwndowner =me.hwnd
    lFormatID = 1
      If (OpenClipboard(hwndowner)) Then
        If (IsClipboardFormatAvailable(lFormatID) <> 0) Then
          hMem = GetClipboardData(lFormatID)
            If (hMem <> 0) Then
              lSize = GlobalSize(hMem)
                If (lSize > 0) Then
                    lPtr = GlobalLock(hMem)
                        If (lPtr <> 0) Then
                          ReDim bData(0 To lSize - 1) As Byte
                          CopyMemory bData(0), ByVal lPtr, lSize
                          GlobalUnlock hMem
                          GetClipboardDataAsString = StrConv(bData, vbUnicode)
                        End If
                End If
            End If
        End If
        CloseClipboard
      End If
    API函数声明:
    Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function CloseClipboard Lib "user32" () As Long
    Private Declare Function GetClipboardData Lib "user32" (ByVal wFormat As Long) As Long
    Private Declare Function IsClipboardFormatAvailable Lib "user32" (ByVal wFormat As Long) As Long
    Private Declare Function RegisterClipboardFormat Lib "user32" Alias "RegisterClipboardFormatA" (ByVal lpString As String) As Long
    Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
    Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
    Private Declare Function GlobalSize Lib "kernel32" (ByVal hMem As Long) As Long
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long)
      

  2.   

    首先在工程中引用Microsot Internet ControlPrivate Sub Command1_Click()
        Dim IEs As New ShellWindows
        Dim IE
        Dim s As String
        
        
        s = Clipboard.GetText
        For Each IE In IEs
            If IE.LocationURL = "http://www.csdn.net" Then
                IE.Document.body.All("name").Value = s
            End If
        Next
    End Sub运行程序前先打开csdn首页,然后跑程序,点击command1可以将剪贴板中的内容复制到首页登录的用户框中。
      

  3.   

    常用的几个用于VB剪贴板的语句作一介绍: 一、CLEAR(,,STACK&) 用于关闭文件,清除文件缓冲区的内容和其它一些设置初始值的工作。其中STACK&为设 置堆栈大小。 二、CLIPBOARD.GETDATA([FORMAT]) 从剪板中返回一个图片。其中FORMAT的值有2、3、8、9具体对应请参照文末的表格。 三、CLIPBOARD.GETFROMAT(FORMAT) 返回TRUE&FALSE,指示剪贴板中是否是指定的格式。其中FORMAT的值有1、2、3、 8、9、&HBF00几项。 四、CLIPBOARD.GETTEXT([FORMAT]) 从剪贴板上返回一串文本。FORMAT的值可以是1、&HBF00,如果没有所要的 字串则返回一个空串“”。 五、CLIPBOARD.SETDATA DATA[,FORMAT] 在剪贴板一使用指定格式放置一个图片。DATA是放在剪贴板上的图片;FORMAT可以是 如下值之一:2、3、8、9。 六、CLIPBOARD.SETTEXTDATA[,FORMAT] 在剪贴板中使用指定格式的一个文本串。DATA是要放入剪板的文本数据; FORMAT可选值为:1、&HBF00。 注:0为自动适应格式(缺省格式) 
    我就不提供代码了...因为提供方法是最好的学习方法了...让你增加认识...