夜猫猫 发表于 2012-7-28 18:09:17

怎么让TrayTip的点号显示正常,并复制完后关闭TrayTip

本帖最后由 夜猫猫 于 2012-7-28 18:12 编辑

需要下面图中红圈中点号动态显示....并能正常关闭...

Global $type

_TrayTip()
fileCopy("C:\WXPE\*.*", "D:\WXPE\*.*", 1)

Func _TrayTip()
While 1
    For $i = 1 to 5 step 1
   sleep(100)
          TrayTip("温馨提示:", "请稍等"&$type& @CRLF _
           &"    正在复制文件中!", 100, 1)
          $type &= '。'
                If StringLen($type) > 6 Then $type = ''
        Next
WEnd
EndFunc

xiehuahere 发表于 2012-7-28 18:35:27

本帖最后由 xiehuahere 于 2012-7-28 18:37 编辑

回复 1# 夜猫猫


    用 AdlibRegister 注册函数使其定时执行,这样才是并发的。FileCopy完成后脚本退出,traytip也就消失了。
你那样就是一直在死循环执行_TrayTip函数而fileCopy并没有得到执行。Global $type
AdlibRegister("_TrayTip", 500)
fileCopy("C:\WXPE\*.*", "D:\WXPE\*.*", 1)

Func _TrayTip()
        TrayTip("温馨提示:", "请稍等" & $type & @CRLF _
           &"    正在复制文件中!", 100, 1)
        $type &= '。'
        If StringLen($type) > 6 Then $type = ''
EndFunc

夜猫猫 发表于 2012-7-28 18:44:27

本帖最后由 夜猫猫 于 2012-7-28 18:49 编辑

回复夜猫猫


    用 AdlibRegister 注册函数使其定时执行,这样才是并发的。FileCopy完成后脚本退出 ...
xiehuahere 发表于 2012-7-28 18:35 http://www.autoitx.com/images/common/back.gif


没作用. 我想要的是& $type &动态显示效果.AdlibRegister是定时的..不灵活

我想这样:但是那个点不动
Global $type

TrayTip("温馨提示:", "请稍等"&_TrayTip()& @CRLF _
           &"    正在复制文件中!", 100, 1)

Func _TrayTip()
While 1
    For $i = 1 to 5 step 1
   sleep(100)
      $type=""
          $type &= '。'
                If StringLen($type) > 6 Then $type = ''
        Next
        Return $type
WEnd
EndFunc

Sleep(5000)

xiehuahere 发表于 2012-7-28 18:58:00

本帖最后由 xiehuahere 于 2012-7-28 18:59 编辑

回复 3# 夜猫猫


    还是不懂你的意思。我上面的代码不就是动态显示的吗(如果fileCopy不是立即返回而是拷贝完才返回的话)?省略号延伸嘛。。。。。话说你运行过没啊?
   作为中级会员,你的代码跟你的身份不符啊。。。我不忍看了 ^_^

haijie1223 发表于 2012-7-28 20:52:57


AdlibRegister("_TrayTip", 100)


While 1
        Sleep(10)
WEnd

Func _TrayTip()
        TrayTip("温馨提示:", "请稍等" & @CRLF _
                       & "    正在复制文件中!", 100, 1)
        Sleep(60)
        TrayTip("温馨提示:", "请稍等●" & @CRLF _
                       & "    正在复制文件中!", 100, 1)
        Sleep(60)
        TrayTip("温馨提示:", "请稍等●●" & @CRLF _
                       & "    正在复制文件中!", 100, 1)
        Sleep(60)
        TrayTip("温馨提示:", "请稍等●●●" & @CRLF _
                       & "    正在复制文件中!", 100, 1)
        Sleep(60)
        TrayTip("温馨提示:", "请稍等●●●●" & @CRLF _
                       & "    正在复制文件中!", 100, 1)
EndFunc   ;==>_TrayTip

xms77 发表于 2012-7-28 21:08:24

回复 5# haijie1223
发哥,这个主意不错,就是太闪眼了,把定时时间和_TrayTip中的延时加大要好点。

ashfinal 发表于 2012-7-28 21:15:57

nono,应该是ToolTip更好吧 一会回来看下 {:face (280):}

shqf 发表于 2012-7-28 22:04:26

Global $type = ""
AdlibRegister("_TrayTip", 250)
;fileCopy("F:\002.vmdk", "D:\", 1)
While 1
        Sleep(250)
WEnd

Func _TrayTip()
        TrayTip("温馨提示:", "    文件正在复制中," & @CRLF & "请稍等" & $type, 1, 1)
        $type &= '。'
        If StringLen($type) > 6 Then $type = ''
EndFunc   ;==>_TrayTip上述代码点号能动态变化,但启用第3句后(也可同时解释掉4-6句),会发现拷贝过程中不会动态变化。说明fileCopy不是立即返回而是拷贝完才返回,看来只能用多进程模拟多线程来实现了。

ashfinal 发表于 2012-7-29 00:15:32

#include <File.au3>
#include <String.au3>
Global $InDir = "D:\driver backup\", $ToDir = "C:\Temp\", $i, $j
$aFileList = _FileListToArray($InDir)
For $i = 1 To $aFileList
        If StringInStr(FileGetAttrib($InDir & $aFileList[$i]), "D") Then
                DirCopy($InDir & $aFileList[$i], $ToDir & $aFileList[$i], 1)
        Else
                FileCopy($InDir & $aFileList[$i], $ToDir & $aFileList[$i], 1 + 8)
        EndIf
        $j += 1
        ToolTip("请稍等" & _StringRepeat(" .", $j) & @CRLF & "    正在复制文件中!", @DesktopWidth - 200, @DesktopHeight - 150, "温馨提示:", 1, 1)
        If $j >= 6 Then $j = 1
        Sleep(100)
Next

不是特别完美,但能凑合用
{:face (411):}

夜猫猫 发表于 2012-7-29 00:32:21

本帖最后由 夜猫猫 于 2012-7-29 00:34 编辑

我原先的想法是把TrayTip独立出来..标题.内容自定义,点号动态是为了好看点...

下面代码.当.有进度时.点号会动..没进度是不动的.                               
TrayTip("温馨提示:", "请稍等"&$type& @CRLF _
                 &"正在下载:"&_getfilename($s_LocalFile)&" "&@CR& _                  
                '下载进度:'&Int(($done / $glen)*100) & " % ", 1,1)
                                $type &= '。'
                          If StringLen($type) > 6 Then $type = ''

夜猫猫 发表于 2012-7-29 13:10:59

{:face (197):}
Global $type
_TrayTip()

Func _TrayTip()
        Local $i = 0
Do
        TrayTip("温馨提示:", "请稍等●"&$type&@CRLF _
                         & "    正在复制文件中!", 100, 1)
                        $type &= '●'
      If StringLen($type) > 6 Then $type = ''
    $i = $i + 1
Until $i = 1000
TrayTip("","",0)
EndFunc   ;==>_TrayTip

Sleep(50000)

epac 发表于 2012-7-29 15:30:40

感谢分享……

ashfinal 发表于 2012-7-29 17:37:55

和楼主沟通有困难,还是默默路过好了...
BTW 难道TrayTip闪烁不厉害么?

xms77 发表于 2012-7-29 20:31:13

回复 9# ashfinal
最起码不闪,不知道traytip有什么办法不闪?

夜猫猫 发表于 2012-7-30 12:35:27

本帖最后由 夜猫猫 于 2012-7-30 12:37 编辑

{:face (394):}......不是不好沟通...是我的意思没传达给你...

最坏的一种状态..是没有动作..静默的.没进程.无进度.需要点号运动.
页: [1] 2
查看完整版本: 怎么让TrayTip的点号显示正常,并复制完后关闭TrayTip