_ClipPutFile 不能正常工作
#include <Misc.au3>Local $fTest
$fTest = _ClipPutFile(@ScriptFullPath & "|" & @ScriptDir & "|" & @SystemDir)
If Not $fTest Then
MsgBox(0,"_ClipPutFile() call Failed","@error = " & @error)
Else
MsgBox(0,"_ClipPutFile()","Content of Clipboard:" & @CRLF & ClipGet())
EndIf
这是帮助中的例子。
返回的错误是@Error=0。 不知道该怎么办? 本帖最后由 lainline 于 2010-2-11 12:21 编辑
windows程序的问题吧
浏览里面也好像也不能同时选择不同目录下的文件或目录放到剪贴板里 本帖最后由 顽固不化 于 2010-2-11 13:26 编辑
1,对中文支持不好。
2,返回错误往往是假象
3,如下,虽然返回了错误,但可以照样粘贴:#include <Misc.au3>
Local $fTest
$fTest = _ClipPutFile("f:\7z"&"|"&"F:\360" )
MsgBox(0,"_ClipPutFile() call Failed","@error = " & @error)
MsgBox(0,"_ClipPutFile()", ClipGet()) :face (32): 本帖最后由 lainline 于 2010-2-11 18:20 编辑
原因大概是 Stringlen 中文长度检查时返回不是实际内存占用数
BinaryToString处理中文也有这个问题
我觉得Stringlen 变更定义后还要保留一个兼容函数
大概已经有了我不知道吧 本帖最后由 lainline 于 2010-2-11 21:54 编辑
写了两个简单的自定义函数#include <Misc.au3>
Local $fTest
$fTest = _ClipPutFile(_ANSI_FIX(@ScriptFullPath & "|" & @ScriptDir & "|" & @SystemDir))
MsgBox(0,"_ClipPutFile()","Content of Clipboard:" & @CRLF & ClipGet())
MsgBox(0,"2",_ANSI_StringLen("你好"))
Func _ANSI_FIX($UN_FIX_TEXT);修复汉字计算字符数引起的字符截断问题,用于ClipPutFile
Local $temp= $UN_FIX_TEXT
Local $cnTEXTnumber = BinaryLen (StringToBinary($temp,4))-StringLen($temp)
If $cnTEXTnumber>0 Then
For $i=1 To $cnTEXTnumber
$temp &= "|"
Next
EndIf
Return $temp
EndFunc
Func _ANSI_StringLen($text);返回字符实际占用数,某处代替StringLen()
Return BinaryLen (StringToBinary($text,4))
EndFunc
页:
[1]