'写入剪切板
'WriteClipboard(格式ID,内容字符)
'     If OpenClipboard(sHwnd)=0 Then     '// 打开剪切板，打开后，其他进程无法访问
'       SendDate  "剪切板打开失败"
'       Exit Sub 
'     End If
' If EmptyClipboard()=0 Then     ' // 清空剪切板，写入之前，必须先清空剪切板
'  SendDate "清空剪切板失败"
'  CloseClipboard()
'   Exit Function 
' End If
'WriteClipboard qa,ss  写入剪切板
'CloseClipboard() 关闭
Function WriteClipboard(ByVal nFormat as UInteger, ByRef ss as String) as Long '写入剪切板
   Dim hMemory as HGLOBAL, lpMemory as LPVOID
   Dim L as Long
   L = Len(ss)
   If L > 0 Then
      hMemory = GlobalAlloc(GMEM_MOVEABLE, L) ' 对剪切板分配内存 他返回的不是一个内存块的指针,而是一个内存对象的句柄
      If hMemory > 0 Then ' Print "内存赋值错误!!!":  Exit Function
         lpMemory = GlobalLock(hMemory) '    // 将内存区域锁定 并且返回指向这个内存对象的第一个字节的指针
         If lpMemory > 0 Then  'Print "锁定内存错误!!!":  Exit Function
            memcpy lpMemory, StrPtr(ss), L ' // 将数据复制进入内存区域
            GlobalUnlock(hMemory)            '   // 解除内存锁定
            If SetClipboardData(nFormat, hMemory) <> 0 Then Function = 1   'Print  "设置剪切板数据失败!!!": Exit Function
         End If
      End If
   End If
End Function