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 <> 0 Then
CopyMemory ByVal lpData, ByVal sData, Len(sData)
GlobalUnlock hMemHandle
EmptyClipboard
SetClipboardData m_cfHTMLClipFormat, hMemHandle
End If
End If
Call CloseClipboard
End If
Dim hMemHandle As Long, lpData As Long
hMemHandle = GlobalAlloc(0, Len(sData) + 10)
If CBool(hMemHandle) Then
lpData = GlobalLock(hMemHandle)
If lpData <> 0 Then
CopyMemory ByVal lpData, ByVal sData, Len(sData)
GlobalUnlock hMemHandle
EmptyClipboard
SetClipboardData m_cfHTMLClipFormat, hMemHandle
End If
End If
Call CloseClipboard
End If
解决方案 »
- 30岁以后我去干什么(讨论)
- 急!在线等!VB中怎样把Text控件中的内容添加到DataGrid控件中.谢谢!
- 请问用Package & Deployment Wizard做出来的cab怎么这么大啊?
- VB与Windows结合的问题(问题解决立即给分)
- 高分求教!关于两个窗体之间同一数据库连接问题!(在线等待!急!!!)
- 在线等待--如何取得VB多维数组的每个维数?谢谢
- 数据库的小问题?
- VB6开发的应用程序在另一台机子安装时出现了一个我解决不了的问题,万分火急!!请进来帮帮(解决后100分马上结)
- 希望有相关经验的朋友帮忙
- 这两个API函数如何用???
- vb的textbox控件,怎么和新浪微博链接呀,如何用textbox控件的内容给
- VB里窗体LEFT TOP 属性的疑问,搞的我焦头烂额。
我把string改为byte数组了,还是乱码,英文、数字正常
Dim sData As String
Dim bData() As Byte
sData = "<a href=#>好123</a>"
bData = StrConv(sData, vbFromUnicode)
'Add the HTML code to the clipboard
If CBool(OpenClipboard(0)) Then
Dim hMemHandle As Long, lpData As Long
hMemHandle = GlobalAlloc(0, UBound(bData) + 1)
If CBool(hMemHandle) Then
lpData = GlobalLock(hMemHandle)
If lpData <> 0 Then
CopyMemory ByVal lpData, ByVal VarPtr(bData(0)), UBound(bData) + 1
GlobalUnlock hMemHandle
EmptyClipboard
SetClipboardData m_cfHTMLClipFormat, hMemHandle
End If
End If
Call CloseClipboard
End If
楼主用WinHex 接收粘贴,多试试定能成功解决。
随便新建一个standard exe工程,写入代码:
Private Sub Command1_Click()
Clipboard.Clear
Clipboard.SetText "中文"
End Sub
在英文操作系统下运行,并点击按钮之后,再在其它地方ctrl+v,得到的是乱码哦
{
LPTSTR lptstrCopy;
HGLOBAL hglbCopy;
//UpdateData(TRUE);
HWND hwndMain=::GetDesktopWindow();;
int cch=m_instr.GetLength();
BSTR ppl=m_instr.AllocSysString();
cch=SysStringByteLen(ppl);
// TODO: Add your control notification handler code here
hglbCopy = GlobalAlloc(GMEM_MOVEABLE,
(cch +3) * sizeof(TCHAR));
::OpenClipboard(NULL);
if (hglbCopy == NULL)
{
CloseClipboard();
return 1;
}
// Lock the handle and copy the text to the buffer.
lptstrCopy =(char*) GlobalLock(hglbCopy);
memcpy(lptstrCopy, ppl, //(LPCSTR)m_instr,
cch );
lptstrCopy[cch] =lptstrCopy[cch+1]=lptstrCopy[cch+2]= (TCHAR) 0;
GlobalUnlock(hglbCopy);
// Place the handle on the clipboard.
EmptyClipboard();
SetClipboardData(CF_UNICODETEXT, hglbCopy);
CloseClipboard();
return 0;
}
要考虑语言的兼容性。 如果粘帖需要多采用几种格式。 用unicode就可以了。