找回密码
 加入
搜索
查看: 94|回复: 4

[AU3基础] [已解决]为啥AI上得到的代码编译失败?

[复制链接]
发表于 4 天前 | 显示全部楼层 |阅读模式
本帖最后由 令狐大虾 于 2025-4-22 23:27 编辑

例如:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1) ; 启用事件驱动模式:ml-citation{ref="4,7" data="citationList"}

; 创建主窗口
Global $hGUI = GUICreate("WIM解压进度", 400, 150)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

; 进度条控件
Global $iProgress = GUICtrlCreateProgress(20, 40, 360, 30)
Global $lblStatus = GUICtrlCreateLabel("准备解压...", 20, 90, 360, 20)
GUISetState(@SW_SHOW, $hGUI)

; 解压参数配置
Global $sWimFile = "C:\install.wim"     ; 修改为实际路径
Global $sDestDir = "D:\Extracted"       ; 修改为目标目录
Global $sWimlibExe = "wimlib-imagex.exe"

; 启动解压进程
Global $iPID = Run($sWimlibExe & ' extract "' & $sWimFile & '" 1 "' & $sDestDir & '" --progress', @ScriptDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
If @error Then
    GUICtrlSetData($lblStatus, "错误:无法启动进程")
    Exit
EndIf

; 实时更新进度
AdlibRegister("_UpdateProgress", 250)
Func _UpdateProgress()
    Local $sOutput = StdoutRead($iPID)
    If @error Then
        AdlibUnRegister("_UpdateProgress")
        Return
    EndIf
    
    ; 匹配进度数值
    Local $aMatches = StringRegExp($sOutput, 'Progress:\s+(\d+)%', 3)
    If Not @error Then
        Local $iPercent = Number($aMatches[0])
        GUICtrlSetData($iProgress, $iPercent)
        GUICtrlSetData($lblStatus, "解压进度:" & $iPercent & "%")
    EndIf
EndFunc

; 等待进程结束
While ProcessExists($iPID)
    Sleep(100)
WEnd

; 处理结果
If @exitcode = 0 Then
    GUICtrlSetData($lblStatus, "解压完成")
Else
    GUICtrlSetData($lblStatus, "错误代码:" & @exitcode)
EndIf
Sleep(3000)
GUIDelete($hGUI)

Func _Exit()
    Exit
EndFunc

发表于 4 天前 | 显示全部楼层
头部加#include <AutoItConstants.au3>
看看。
发表于 4 天前 | 显示全部楼层
没有继续跟AI交互交互么?
发表于 4 天前 | 显示全部楼层
#Region    ;IncludesHelper ADD
#Include <AutoItConstants.au3>
#include <GUIConstantsEx.au3>
#EndRegion ;IncludesHelper ADD
Opt("GUIOnEventMode", 1) ; 启用事件驱动模式:ml-citation{ref="4,7" data="citationList"}

; 创建主窗口
Global $hGUI = GUICreate("WIM解压进度", 400, 150)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

; 进度条控件
Global $iProgress = GUICtrlCreateProgress(20, 40, 360, 30)
Global $lblStatus = GUICtrlCreateLabel("准备解压...", 20, 90, 360, 20)
GUISetState(@SW_SHOW, $hGUI)

; 解压参数配置
Global $sWimFile = "C:\install.wim"     ; 修改为实际路径
Global $sDestDir = "D:\Extracted"       ; 修改为目标目录
Global $sWimlibExe = "wimlib-imagex.exe"

; 启动解压进程
Global $iPID = Run($sWimlibExe & ' extract "' & $sWimFile & '" 1 "' & $sDestDir & '" --progress', @ScriptDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
If @error Then
    GUICtrlSetData($lblStatus, "错误:无法启动进程")
    Exit
EndIf

; 实时更新进度
AdlibRegister("_UpdateProgress", 250)
Func _UpdateProgress()
    Local $sOutput = StdoutRead($iPID)
    If @error Then
        AdlibUnRegister("_UpdateProgress")
        Return
    EndIf
    
    ; 匹配进度数值
    Local $aMatches = StringRegExp($sOutput, 'Progress:\s+(\d+)%', 3)
    If Not @error Then
        Local $iPercent = Number($aMatches[0])
        GUICtrlSetData($iProgress, $iPercent)
        GUICtrlSetData($lblStatus, "解压进度:" & $iPercent & "%")
    EndIf
EndFunc

; 等待进程结束
While ProcessExists($iPID)
    Sleep(100)
WEnd

; 处理结果
If @exitcode = 0 Then
    GUICtrlSetData($lblStatus, "解压完成")
Else
    GUICtrlSetData($lblStatus, "错误代码:" & @exitcode)
EndIf
Sleep(3000)
GUIDelete($hGUI)

Func _Exit()
    Exit
EndFunc
 楼主| 发表于 4 天前 | 显示全部楼层
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2025-4-26 19:12 , Processed in 0.078273 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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