赞 | 2 |
VIP | 143 |
好人卡 | 1 |
积分 | 1 |
经验 | 216792 |
最后登录 | 2019-10-10 |
在线时间 | 24 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 61
- 在线时间
- 24 小时
- 注册时间
- 2008-8-5
- 帖子
- 1924
|
如果需要中文,先弄转码方法:
class String
#--------------------------------------------------------------------------
# ● 用来编码 Ruby 字符串、解码 unicode 的 两个 Windows API 函数
#--------------------------------------------------------------------------
@@MultiByteToWideChar = Win32API.new("kernel32", "MultiByteToWideChar", ['I', 'L', 'P', 'I', 'P', 'I'], 'I')
@@WideCharToMultiByte = Win32API.new("kernel32", "WideCharToMultiByte", ['I', 'L', 'P', 'I', 'P', 'I', 'P', 'P'], 'I')
#--------------------------------------------------------------------------
# ● 返回将 Ruby UTF-8 字符串对象(本身)编码为 unicode 后的字符串
#--------------------------------------------------------------------------
def to_unicode
# 65001: UTF-8 字符集编码(代码页)
len = @@MultiByteToWideChar.call(65001, 0, self, -1, 0, 0) << 1
buf =" " * len
@@MultiByteToWideChar.call(65001, 0, self, -1, buf, len)
return buf
end
#--------------------------------------------------------------------------
# ● 返回将编码为 unicode 的字符串对象(本身)解码为 UTF-8 后的字符串
#--------------------------------------------------------------------------
def to_UTF8
len = @@WideCharToMultiByte.call(65001, 0, self, -1, 0, 0, 0, 0)
buf =" " * len
@@WideCharToMultiByte.call(65001, 0, self, -1, buf, len, 0, 0)
# 去掉 '\0' 字符串结束符(因为转换之后仅仅用于 Ruby 字符串)
buf.slice!(-1, 1)
return buf
end
end
然后
1、
CopyFile = Win32API.new("kernel32", "CopyFileW", "ppi", "i")
CopyFile.call("中文杯具.avi".to_unicode, "Data/中文杯具.avi".to_unicode, 0)
2、
OpenClipboard = Win32API.new("user32", "OpenClipboard", "l", "l")
GetClipboardData = Win32API.new("user32", "GetClipboardData", "l", "l")
GlobalLock= Win32API.new("kernel32", "GlobalLock", "l", "p")
GlobalUnlock = Win32API.new("kernel32", "GlobalUnlock", "l", "l")
CloseClipboard = Win32API.new("user32", "CloseClipboard", "v", "l")
if(OpenClipboard.call(0))
hClip = GetClipboardData.call(13)
str = GlobalLock.call(hClip)
GlobalUnlock.call(hClip)
CloseClipboard.call
print str.to_UTF8
end |
|