0

以下是相关代码:

#Persistent
#SingleInstance, Force
#NoEnv

Gui, 2:New
Gui, 2: +Owner
Gui, 2:Color, 000000
Gui, 2:+hwndGUIaddress2
Gui, 2:Show, w500 h137, WinB
Gui, 2: +LastFound
WinSet, Transparent, 190

Gui, New
Gui, +Owner
Gui, Font, s8 cB4FFFF, Tahoma
Gui, Add, Text, x5  y5  w130, Filename:
;Gui, Add, Text, vProgress
Gui, Add, Text, x80 y5  w650 vFilename
Gui, Add, Text,     y+1 w650 vProgress

Gui, Color, EEAA99
Gui, +LastFound
Gui, +hwndGUIAddress1
WinSet, TransColor, EEAA99 225
Gui,    Show, w500 h137
OnMessage(0x03, "WM_MOVE")

Loop, D:\MOVIES_in\*.ts,0,1
{
    title = %A_LoopFileFullPath%
    LongPath = %A_LoopFileLongPath%
    SplitPath LongPath, FileName, OutDir, OutExtension, OutNameNoExt, OutDrive
    FileGetSize, Size_In, %A_LoopFileFullPath%
}


GuiControl, , Filename, %title%

Gosub Check_D_Drive

SetTimer, Check_D_Drive, 5000
return

Check_D_Drive:
{
    Loop, D:\MOVIES_out\*.ts,0,1
    {
        FileGetSize, Size_Out, %A_LoopFileFullPath%
    }

    sleep 5000

    Loop, D:\MOVIES_out\*.ts,0,1
    {
        FileGetSize, Size_Out2, %A_LoopFileFullPath%
    }

    complete:= Size_Out / Size_In
    msgbox,,,%complete%,1
    GuiControl,, Progress, %complete%

    if (  complete > .98 )
    {
        if (%Size_Out% == %Size_Out2%)
        {
            SetTimer, Check_I_Drive, Off
            msgbox Job is complete
        }
    }
}
return
;---------------------------------------------------------------------------------
WM_MOVE()
{
    global GUIAddress1, global GUIAddress2
    WinGetPos, mainX, mainY, Width, Height, Ahk_id %GUIAddress1%
    WinMove, Ahk_id %GUIAddress2%,, %mainX%, %mainY%
    WinSet, AlwaysOnTop,, Ahk_id %GUIAddress1%
}

Msgbox 工作正常。我只是没有在我的 GUI 中看到更新。

4

1 回答 1

0

如果您将问题限制在更新上,它可以工作

Gui, New
Gui, +Owner
Gui, Font, s8 cB4FFFF, Tahoma
Gui, Add, Text, x5  y5  w130, Filename:
;Gui, Add, Text, vProgress
Gui, Add, Text, x80 y5  w650 vFilename
Gui, Add, Text,     y+1 w650 vProgress
Gui, Show


loop, 100
{
  Random, Size_Out , 1000000, 100000000
  Random, Size_In , 1000000, 100000000

  complete:= Size_Out / Size_In
  GuiControl,, Filename, %A_Index%
  GuiControl,, Progress, %complete%
  Sleep, 1000

}

您的问题必须在其他地方。

使用 MsgBox 进行测试是有问题的,因为它改变了循环的焦点和运行时间。

在搜索问题而不是 MsgBox 时,您可以尝试使用工具提示显示complete的值,以检查它是否真的在更新。

Tooltip, %complete%

问题的另一个原因是您同时运行了两个GUI(无法从脚本中判断,但那里有第二个 GUI)。

如果这是您的问题并且工具提示显示正确的值,请查看此示例以了解如何命名 gui 以及如何更新特定的。

于 2013-09-21T08:44:15.193 回答