令狐大虾 发表于 2025-4-22 02:52:04

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

本帖最后由 令狐大虾 于 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)
      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


lpxx 发表于 2025-4-22 08:58:50

头部加#include <AutoItConstants.au3>
看看。

holley 发表于 2025-4-22 09:04:43

没有继续跟AI交互交互么?

redapple2008 发表于 2025-4-22 09:47:02

#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)
      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

令狐大虾 发表于 2025-4-22 23:27:12

redapple2008 发表于 2025-4-22 09:47


谢谢了!
页: [1]
查看完整版本: [已解决]为啥AI上得到的代码编译失败?