找回密码
 加入
搜索
查看: 8757|回复: 16

[AU3基础] 【已解决】如何判断剪切板中的内容是字符串还是文件

 火.. [复制链接]
发表于 2010-4-25 14:49:21 | 显示全部楼层 |阅读模式
本帖最后由 kenan 于 2010-4-26 19:11 编辑

If ClipGet ()=??????

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-4-25 15:49:23 | 显示全部楼层
  1. While 1
  2.         ToolTip(ClipGet())
  3.         Sleep(1000)
  4. WEnd
复制代码
看到你的问题, 我用了以上的函数测试了一下。 一直都没注意过,原来WINDOWS复制文件的时候,点了复制只复制的是文件的路径信息。 不管什么文件, 只复制路径信息。

由此,可以对剪贴板中的信息判断,如果前3个字符为C:\,D:\,等这样的字符,基本可以判断剪贴板中的数据是一个文件。如果你需要更准确的判断,可以对剪贴板中的数据进行按\分割,或者判断最后的4个字符是不是.au3,.txt等这样的文件后缀名。 前后综合起来,前面判断盘符,后面判断文件类型。 最后再加上FileExists(ClipGet()) 判断是不是一个文件, 基本上,剪贴板中是不是文件就可以一清二楚了。

评分

参与人数 1金钱 +15 收起 理由
afan + 15

查看全部评分

 楼主| 发表于 2010-4-25 16:21:30 | 显示全部楼层
回复 2# lanfengc

谢谢了
但我复制一个文件后,在记事本中却不能粘贴路径信息
所以我想是字符串还是文件应该还是有一点不同吧
不过ClipGet ()确实是得到路径信息
你这种判断方法似乎有点麻烦
 楼主| 发表于 2010-4-25 16:43:18 | 显示全部楼层
本帖最后由 kenan 于 2010-4-25 16:45 编辑

在帮助里查了一下
成功: 返回剪贴板的文本字符串.
失败: 如果剪切板为空, @error设为1
如果剪切板为非文本, @error设为2.
如果无法访问剪切板, @error设为3或4.

我想弱弱的问一下,怎么获得这些返回值

ClipGet()
MsgBox("","",@error )

怎么老是得到  0
发表于 2010-4-25 16:54:39 | 显示全部楼层
看看也学习下
发表于 2010-4-25 17:05:06 | 显示全部楼层
  1. While 1
  2. If FileExists(ClipGet()) Then
  3.         ToolTip("剪贴板中的数据是文件或文件路径。")
  4. Else
  5.         ToolTip("剪贴板中的数据是文本。")
  6. EndIf
  7. WEnd
复制代码
这个代码能达到你的要求了吧?
 楼主| 发表于 2010-4-25 17:18:37 | 显示全部楼层
如果我剪切板里面是字符串,而且是一个文件路径,而且这个路径刚好存在,那么你这个判断就出问题了

告诉我怎么获得返回值吧,
发表于 2010-4-25 19:03:04 | 显示全部楼层
如果我剪切板里面是字符串,而且是一个文件路径,而且这个路径刚好存在,那么你这个判断就出问题了

告诉 ...
kenan 发表于 2010-4-25 17:18



    这种特殊情况。。。确实没法判断。 你想做什么?
发表于 2010-4-25 19:07:03 | 显示全部楼层
回复 4# kenan


    4楼的代码没有错,之所以得到0,是因为成功返回了。
你可以打开画图,选定一片区域,然后复制,你就会发现 @error 不为0了。
 楼主| 发表于 2010-4-25 19:13:07 | 显示全部楼层
我在写个程序里面需要获得剪切板的内容,其实也可以不用做判断,一般不会是文件
但我想在某些情况下可能就会出问题,所以我想写得更严谨一点
 楼主| 发表于 2010-4-25 19:21:37 | 显示全部楼层
回复 9# zjimmy


    确实是这样剪切板中如果是一副图的话就会返回2,我原以为如果是文件的话也应该返回2

我就想剪切板中是字符串还是文件总会有一点不同吧
发表于 2010-4-25 22:06:03 | 显示全部楼层
本帖最后由 zjimmy 于 2010-4-25 22:07 编辑

_ClipBoard_GetData 好像可以解决,例如:
  1. #Include <Clipboard.au3>
  2. MsgBox(0,0,_ClipBoard_GetData($CF_TEXT))
复制代码

评分

参与人数 1金钱 +15 收起 理由
afan + 15

查看全部评分

发表于 2010-4-26 10:47:32 | 显示全部楼层
  1. #include <GuiConstantsEx.au3>
  2. #include <GuiEdit.au3>
  3. #include <ClipBoard.au3>
  4. #include <WindowsConstants.au3>

  5. Opt('MustDeclareVars', 1)

  6. Global $iMemo

  7. _Main()

  8. Func _Main()
  9.         Local $hGUI, $btn_SetData, $btn_GetData,$str,$str1

  10.         ; Create GUI
  11.         $hGUI = GUICreate("Clipboard", 400, 350)
  12.     $iMemo = GUICtrlCreateEdit("", 2, 2, 396, 296, BitOR($ES_AUTOVSCROLL, $ES_READONLY))
  13.         GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
  14.         $btn_SetData = GUICtrlCreateButton("Set ClipBoard Data", 50, 310, 120, 30)
  15.         $btn_GetData = GUICtrlCreateButton("Get ClipBoard Data", 210, 310, 120, 30)
  16.         GUISetState()

  17.         ; Loop until user exits
  18.         While 1
  19.                 Switch GUIGetMsg()
  20.                         Case $GUI_EVENT_CLOSE
  21.                                 ExitLoop
  22.                         Case $btn_SetData
  23.                                 _ClipBoard_SetData ("ClipBoard Library")
  24.                         Case $btn_GetData
  25.                                 $str=_ClipBoard_GetData ()
  26.                                 If $str<>0 Then
  27.                                 MemoWrite($str)
  28.                         Else
  29.                                 $str1=ClipGet()                               
  30.                                 MemoWrite($str1)
  31.                                 EndIf
  32.                 EndSwitch
  33.         WEnd

  34. EndFunc   ;==>_Main

  35. ; Write message to memo
  36. Func MemoWrite($sMessage = "")
  37.         GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
  38. EndFunc   ;==>MemoWrite
复制代码

评分

参与人数 1金钱 +15 收起 理由
afan + 15

查看全部评分

 楼主| 发表于 2010-4-26 19:08:43 | 显示全部楼层
回复 12# zjimmy

谢谢zjimmy
问题解决了
 楼主| 发表于 2010-4-26 19:09:49 | 显示全部楼层
回复 13# 3mile


    3mile 还是谢了
看不懂你的代码什么意思,以后再看吧
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2026-9-22 09:03 , Processed in 0.101323 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

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