施用SetClipboardData将中文放入剪贴板时出现乱码


使用SetClipboardData将中文放入剪贴板时出现乱码
sData中是html代码,全是英文的时候没有问题,有中文再粘贴出来就全是乱码

  If CBool(OpenClipboard(0)) Then
   
      Dim hMemHandle As Long, lpData As Long
      
      hMemHandle = GlobalAlloc(0, Len(sData) + 10)
      
      If CBool(hMemHandle) Then
               
         lpData = GlobalLock(hMemHandle)
         If lpData $amp; <amp> amp;$nbsp;0 Then
            
            CopyMemory ByVal lpData, ByVal sData, Len(sData)
            GlobalUnlock hMemHandle
            EmptyClipboard
            SetClipboardData m_cfHTMLClipFormat, hMemHandle
                        
         End If
      
      End If
   
      Call CloseClipboard
   End If
</amp>


VisualBasic程序开发环境 程序开发 VisualBasic

BorisX 10 years, 11 months ago

既然是在VB里编程,干嘛不使用VB封装好的clipbroad对象呢.


如果功能都一样,你这样做除了自找麻烦没别的用处....

jarszm answered 10 years, 11 months ago

sData 是 String 吧,我再弄 Access 密码(剪切板输出)时也遇到过。大致原因是 VB 调用 API 时 String 自动装换编码,由 VB 的Unicode 转为系统本地编码,要阻止其胡乱转换,可以自己手工转换,以 Byte 数组的方式输出。

定位Moyan answered 10 years, 11 months ago

Your Answer