Wrong character in ClipBoard.AsText??
In Delphi, use ClipBoard unit, a common method "ClipBoard.AsText" is doing a wrong way when using non-English character. How to fix it? Look into the source code, you will find VCL use CF_TEXT to do the job (change it to CF_UNICODETEXT)!
Now we can use following code to due with the problem!
---Chinese---
使用Delphi的剪贴板的AsText方法会导致非英语出现乱码,怎么解决?改用Unicode就OK啦
procedure SetClipboardText(AStr: string);
var // SetBuffer(CF_TEXT, PChar(Value)^, Length(Value) + 1);
Data: THandle;
DataPtr: Pointer;
Size: Integer;
WStr: PWideChar;
begin
Size := Length(AStr) * 4;
WStr := AllocMem(Size);
try
// convert to Unicode
StringToWideChar(AStr, WStr, Size);
OpenClipboard(0);
EmptyClipboard;
Data := GlobalAlloc(GMEM_MOVEABLE+GMEM_DDESHARE, Size);
try
DataPtr := GlobalLock(Data);
try
Move(WStr^, DataPtr^, Size);
SetClipboardData(CF_UNICODETEXT, Data);
finally
GlobalUnlock(Data);
end;
except
GlobalFree(Data);
raise;
end;
finally
CloseClipboard;
FreeMem(WStr);
end;
end;
mathsfan补充:好久没更新了,顺便来更新一下。
文章转自:
http://blog.csdn.net/ly_liuyang/archive/2007/09/28/1804562.aspx
分享到:
相关推荐
这是我用Delphi写的一个可以自动监视剪贴板的程序;可将监视得到的文本保存到文本文件。
我以前用delphi写的一个简单的监测剪贴板的程序,可以进行多次复制,然后有选择的粘贴,
Delphi增强型剪贴板管理程序,可以保存剪切板历史文本,可以快速填序列号,也可上网填表格,还能自动抓取网页文本,快速打开文件夹,快速打开网络地址,小型个人数据管理,显示桌面,支持系统托盘,自带delphi7源码。...
Delphi获取并查看系统剪贴板的内容,查看通过复制功能进入到剪贴板中的内容,不包括图片信息,只可以查看纯文字类型的内容,在Windows中,Delphi与剪贴板是如何互通的,本代码将为您展示如何编写剪贴板相关程序。
敝人近期整理的客户端与服务端通信实例,数据编码约定采用UTF-8编码,解决中文乱码问题.ServerSocket组件可以同时接受一个或多个ClientSocket组件的连接请求,并与每个ClientSocket组件建立单独的连接,进行单独的...
sqlite3 for delphi 自己修改的版本 解决中文乱码问题
敝人近期整理的客户端与服务端通信实例,数据编码约定采用UTF-8编码,解决中文乱码问题.ServerSocket组件可以同时接受一个或多个ClientSocket组件的连接请求,并与每个ClientSocket组件建立单独的连接,进行单独的...
DELPHI例子,监控剪贴板内容
Delphi 剪贴板监视,这里使用了Delphi中的 Clipbrd操作类,可监视复制到剪贴板中的数据,只要有复制的操作,复制的文字就会自动显示在监视器文本框中,如运行截图所示,文本框会显示任意复制到剪贴板中的数据,不过...
处理剪贴板中Excel中的数据,封装成自定义的数据集,获取剪贴板中的Excel数据,并进行处理,保留空单元格,方便读取后程序处理
Delphi改变桌面壁纸以及监视剪贴板内容..rar
在DELPHI中使用MyDAC连接MySQL数据库时中文显示乱码的解决方法。
用Delphi写的从剪切板获取图片Base64String的ActiveX插件 图片Base64String可以用于将剪切板中的图片保存至服务器,省去用户手动保存图片的麻烦。
程序里有一个160*160的image控件,如果复制的是图片类型,就会自动显示在上面 如果复制的是文本,就会显示在输入框中
delphi中如何解决Combobox删除字符时出现乱码
delphi XE10写的,检测windows剪贴板中文本长度的小程序源码
Delphi进行Base64编码后,如果使用javascript解码,会出现如下问题: 1. 汉字乱码 2. 空格变成 + 号 本资源演示Delphi代码,实现javascript能正确进行Base64解码,不出现上述2个问题。 解决思路:进行Base64前先...
最简单的Windows剪贴板查看器Delphi版..rar
Delphi实现用剪贴板复制和粘贴图像,Delphi中与剪贴板的操作,复制和粘贴图片。
代码很简单,代码很简单。 建议到家先行百度 下面是d7的 idFTP1.IOHandler.DefStringEncoding:=tencoding.UTF8;