找回密码
 加入
搜索
查看: 3624|回复: 5

[AU3基础] _ClipPutFile 不能正常工作

[复制链接]
发表于 2010-2-10 13:27:56 | 显示全部楼层 |阅读模式
#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。 不知道该怎么办?
发表于 2010-2-11 11:27:33 | 显示全部楼层
本帖最后由 lainline 于 2010-2-11 12:21 编辑

windows程序的问题吧
浏览里面也好像也不能同时选择不同目录下的文件或目录放到剪贴板里
发表于 2010-2-11 13:10:20 | 显示全部楼层
本帖最后由 顽固不化 于 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())
发表于 2010-2-11 17:53:02 | 显示全部楼层
发表于 2010-2-11 18:13:32 | 显示全部楼层
本帖最后由 lainline 于 2010-2-11 18:20 编辑

原因大概是 Stringlen 中文长度检查时返回不是实际内存占用数
BinaryToString  处理中文也有这个问题

我觉得Stringlen 变更定义后还要保留一个兼容函数

大概已经有了我不知道吧
发表于 2010-2-11 20:19:19 | 显示全部楼层
本帖最后由 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
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-18 17:08 , Processed in 0.082048 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表