找回密码
 加入
搜索
查看: 6337|回复: 15

[AU3基础] 以前写的一个小工具现在无法运行

 火.. [复制链接]
发表于 2011-7-14 16:13:54 | 显示全部楼层 |阅读模式
本帖最后由 smooth 于 2011-7-14 22:35 编辑

我几个月前使用AUTOIT_3.3.6.1第一版,写了一个很小的工具,当时都能用的。我现在C盘装了Windows7,H盘装了XP,我在这2个系统之下,都无法再运行这个小工具了,脚本无法运行了,连原来已经编译好的也不能运行了,也是界面都出不来了,可是我发给别人,别人都能运行的。不知道怎么回事,请各位指点。

附件:
#NoTrayIcon
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_icon=include\系统清理工具.ico
#AutoIt3Wrapper_outfile=系统资料转移工具.exe
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_Comment=程序制作:鼎盛中国
#AutoIt3Wrapper_Res_Description=系统资料转移工具
#AutoIt3Wrapper_Res_Fileversion=1.6.8.8
#AutoIt3Wrapper_Res_LegalCopyright=All CopyRights Reserve By Cnds
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#Region AutoIt3Wrapper 预编译参数(常用参数)
#EndRegion AutoIt3Wrapper 预编译参数设置完成

#include <GUIConstantsEx.au3>
#include <buttonconstants.au3>
#include <WindowsConstants.au3>

#Include <Constants.au3>
#include <File.au3>
#include <GuiListBox.au3>

#Include <WinAPIEx.au3>

#cs ____________________________________

 Au3 版本:3.3.6.1
 脚本作者: 鼎盛中国
        Email: smooth188@163.com
        QQ/TM: 93737785
 脚本版本: 1.1.0.8
 脚本功能: 清理系统垃圾文件

#ce _______________脚本开始_________________
;
;禁止程序在桌面路径运行
If @ScriptDir = @DesktopDir Or @ScriptDir = @DesktopCommonDir Then
        MsgBox(0,"错误","请勿将程序放在桌面运行", 3)
        Exit
EndIf
;
Global $Desktoppath = "D:\Backup\桌面"
Global $Favoritespath = "D:\Backup\收藏夹"
Global $Personalpath = "D:\Backup\我的文档"
;
Global $Title = "系统资料转移工具"
If WinExists($Title) Then Exit
AutoItWinSetTitle($Title)
Global $Form = GUICreate($Title, 430, 250, -1, -1)
;加载图片
Global $Image = @TempDir & '\Logo.jpg'
FileInstall('include\Logo.jpg', $Image, 1)
GUICtrlCreatePic($Image, 150, 10, 268, 52, 0)
FileDelete($Image)
;
$Group1 = GUICtrlCreateGroup("", 10, 2, 120, 52)
$Group2 = GUICtrlCreateGroup("", 148, 2, 272, 62)
Dim $Checkbox[4]
Dim $Button[4]
$Button[1] = GUICtrlCreateButton("全部选择(&A)", 22, 16, 96, 30)
$Group3 = GUICtrlCreateGroup("C盘资料转移", 15, 75, 400, 120)
$Checkbox[1] = GUICtrlCreateCheckbox("把“桌面”转移到“D:\Backup\桌面”", 24, 96, 218, 20, $BS_RIGHTBUTTON)
$Checkbox[2] = GUICtrlCreateCheckbox("把“收藏夹”转移到“D:\Backup\收藏夹”", 24, 130, 242, 20, $BS_RIGHTBUTTON)
$Checkbox[3] = GUICtrlCreateCheckbox("把“我的文档”转移到“D:\Backup\我的文档”", 24, 160, 266, 20, $BS_RIGHTBUTTON)
$Button[2]= GUICtrlCreateButton("转移(&E)", 20, 210, 60, 25)
$Button[3]= GUICtrlCreateButton("恢复(&R)", 120, 210, 60, 25)
GUICtrlCreateLabel("程序制作:鼎盛中国", 280, 210, 108, 20)
GUICtrlCreateLabel("Email:smooth188@163.com", 280, 230, 180, 20)
;
GUISetState(@SW_SHOW)  ;建议所有控件都建立完再显示 避免窗口重绘
;
Opt("TrayMenuMode",1)   ; 默认托盘菜单项目(脚本已暂停/退出脚本) (Script Paused/Exit) 将不显示.
$prefsitem  = TrayCreateItem("参数")
TrayCreateItem("")
$aboutitem  = TrayCreateItem("关于")
TrayCreateItem("")
$exititem   = TrayCreateItem("退出")
TraySetState()
;
Local $bTf = True
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                        
                        Case $GUI_EVENT_CLOSE
                            If MsgBox(4, "温馨提示", "退出程序并访问鼎盛中国网站吗?", 0, $Form) = 7 Then
                                    Exit
                                Else 
                                        shellexecute("Http://hi.baidu.com/cnace")
                                        Exit
                EndIf
                                
                        Case $Button[1] 
                                If $bTf = True Then
                                GUICtrlSetData($Button[1], '全部取消(&C)')
                                For $i = 1 To 3
                                        GUICtrlSetState($Checkbox[$i],$GUI_CHECKED)
                                Next
                                $bTf = False
                            Else
                                    GUICtrlSetData($Button[1], '全部选择(&A)')
                                        For $i = 1 To 3
                                            GUICtrlSetState($Checkbox[$i],$GUI_UNCHECKED)
                                    Next
                                    $bTf = True
                            EndIf

                        Case $Button[2]
                Dim $s = 0
                                For $c = 1 To 3
                                        If GUICtrlRead($Checkbox[$c]) = $GUI_CHECKED Then 
                                                $s = 1
                                                ExitLoop
                                        EndIf
                                Next
                                        If $s = 0 Then
                                                $Msg = MsgBox(0, "温馨提示", "您未选择任何项目,请选择要执行的项目后再操作!", 0, $Form)
                                        Else
                                                ;计算转移前C盘的可用空间
                        If NOT @error Then
                                        $total = DriveSpaceFree("C:")
                        EndIf
                                                
                                                For $m = 1 To 2
                                                    GUICtrlSetState($Button[$m],$GUI_DISABLE)
                                                Next
                                                For $i=1 To 3
                            GUICtrlSetState($Checkbox[$i],$GUI_DISABLE)
                        Next 
                                            _MainProgram();执行转移主程序
                                                ;计算转移后C盘的可用空间
                                                Dim $result
                                                If NOT @error Then
                                    $totalsize = DriveSpaceFree("C:")
                        EndIf
                                                $result = Abs(Round(($totalsize - $total), 2))
                                                
                                                If MsgBox(4,"温馨提示", "资料转移完成,共为您释放了 " & $result & " MB的C盘空间^_^,是否退出程序?", 0, $Form) = 6 Then
                                                        shellexecute("Http://hi.baidu.com/cnace")
                                                        EXIT
                                                Else 
                                                        For $n = 1 To 3
                                                                GUICtrlSetState($Button[$n],$gui_enable)
                                                        Next
                                                        For $i=1 To 3
                                GUICtrlSetState($Checkbox[$i],$GUI_ENABLE)
                                                                GUICtrlSetState($Checkbox[$i],$GUI_UNCHECKED)
                            Next
                                                        Sleep(100)
                                                        GUICtrlSetData($Button[1], '全部选择(&A)')
                                                EndIf
                                    EndIf
                                
                        Case $Button[3]
                                Dim $s = 0
                                For $c = 1 To 3
                                        If GUICtrlRead($Checkbox[$c]) = $GUI_CHECKED Then 
                                                $s = 1
                                                ExitLoop
                                        EndIf
                                Next
                                        If $s = 0 Then
                                                $Msg = MsgBox(0, "温馨提示", "您未选择任何项目,请选择要执行的项目后再操作!", 0, $Form)
                                        Else
                                                ;计算转移前C盘的可用空间
                        If NOT @error Then
                                        $total = DriveSpaceFree("C:")
                        EndIf
                                                
                                                For $m = 1 To 2
                                                    GUICtrlSetState($Button[$m],$GUI_DISABLE)
                                                Next
                                                For $i=1 To 3
                            GUICtrlSetState($Checkbox[$i],$GUI_DISABLE)
                        Next 
                                            _Recovery();执行恢复主程序
                                                ;计算转移后C盘的可用空间
                                                Dim $result
                                                If NOT @error Then
                                    $totalsize = DriveSpaceFree("C:")
                        EndIf
                                                $result = Abs(Round(($totalsize - $total), 2))
                                                
                                                If MsgBox(4,"温馨提示", "恢复完成,共占用了 " & $result & " MB的C盘空间^_^,是否退出程序?", 0, $Form) = 6 Then
                                                        shellexecute("Http://hi.baidu.com/cnace")
                                                        EXIT
                                                Else 
                                                        For $n = 1 To 3
                                                                GUICtrlSetState($Button[$n],$gui_enable)
                                                        Next
                                                        For $i=1 To 3
                                GUICtrlSetState($Checkbox[$i],$GUI_ENABLE)
                                                                GUICtrlSetState($Checkbox[$i],$GUI_UNCHECKED)
                            Next
                                                        Sleep(100)
                                                        GUICtrlSetData($Button[1], '全部选择(&A)')
                                                EndIf
                                        EndIf
        EndSwitch
                
        $msg = TrayGetMsg()
    Select
        Case $msg = 0
            ContinueLoop
        Case $msg = $prefsitem
            Msgbox(64, "参数:", "系统版本:" & @OSVersion)
        Case $msg = $aboutitem
            Msgbox(64, "关于:系统清理工具", "程序制作:鼎盛中国,2011年4月28日于上海")
        Case $msg = $exititem
            ExitLoop
    EndSelect
WEnd
;
;
Func _MainProgram()
    Dim $Checkboxcount[1]
    $i = 1
    For $j = 1 To 3 ;已知 有3个checkbox
            If GUICtrlRead($Checkbox[$j]) = $GUI_Checked Then
                    ReDim $Checkboxcount[$i+1];修改新数组长度
                    $Checkboxcount[$i] = $j;在新数组中记录下需要执行的行
                    $i = $i + 1 ;计数
            EndIf
    Next
        $i=$i-1
    For $k = 1 To $i
            _Work($Checkboxcount[$k]);执行这一条
    Next
EndFunc

Func _Work($worknum)
        Switch $worknum
            Case 1
                        If @DesktopDir <> $Desktoppath Then
                            RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders", "Desktop", "REG_EXPAND_SZ", $Desktoppath)        
                            RunWait(@ComSpec & " /c taskkill /f /im explorer.exe", "", @SW_HIDE)
                            Run(@WindowsDir & "\explorer.exe", "", "")
                            Dirmove(@UserProfileDir & "\桌面", @UserProfileDir & "\桌面_rename")
                    Dirmove(@UserProfileDir & "\桌面_rename", $Desktoppath, 1)
                        EndIf
                Case 2
                        If @FavoritesDir <> $Favoritespath Then 
                            RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders", "Favorites", "REG_EXPAND_SZ", $Favoritespath)
                            RunWait(@ComSpec & " /c taskkill /f /im explorer.exe", "", @SW_HIDE)
                            Run(@WindowsDir & "\explorer.exe", "", "")
                            Dirmove(@UserProfileDir & "\收藏夹", @UserProfileDir &  "\收藏夹_rename")
                    Dirmove(@UserProfileDir & "\收藏夹_rename", $Favoritespath, 1)
                        EndIf
                Case 3
                        If @MyDocumentsDir <> $Personalpath Then
                           RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders", "Personal", "REG_EXPAND_SZ", $Personalpath)
                           RunWait(@ComSpec & " /c taskkill /f /im explorer.exe", "", @SW_HIDE)
                           Run(@WindowsDir & "\explorer.exe", "", "")
                           Dirmove(@UserProfileDir & "\My Documents", @UserProfileDir & "\My Documents_rename")
                   Dirmove(@UserProfileDir & "\My Documents_rename", $Personalpath, 1)
                        EndIf
        EndSwitch
EndFunc
;
;恢复系统默认的路径
Func _Recovery()
    Dim $Checkboxcount[1]
    $i = 1
    For $j = 1 To 3 ;已知 有3个checkbox
            If GUICtrlRead($Checkbox[$j]) = $GUI_Checked Then
                    ReDim $Checkboxcount[$i+1];修改新数组长度
                    $Checkboxcount[$i] = $j;在新数组中记录下需要执行的行
                    $i = $i + 1 ;计数
            EndIf
    Next
        $i=$i-1
    For $k = 1 To $i
            _Workcode($Checkboxcount[$k]);执行这一条
    Next
EndFunc

Func _Workcode($worknum)
        Switch $worknum
                Case 1
                        If @DesktopDir = $Desktoppath Then 
                            RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders", "Desktop", "REG_EXPAND_SZ", "%USERPROFILE%\桌面")        
                            RunWait(@ComSpec & " /c taskkill /f /im explorer.exe", "", @SW_HIDE)
                            Run(@WindowsDir & "\explorer.exe", "", "")
                            Dirmove($Desktoppath, $Desktoppath & "_rename")
                    Dirmove($Desktoppath & "_rename", @UserProfileDir & "\桌面", 1)
                        EndIf
                Case 2
                        If @FavoritesDir = $Favoritespath Then
                            RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders", "Favorites", "REG_EXPAND_SZ", "%USERPROFILE%\收藏夹")
                            RunWait(@ComSpec & " /c taskkill /f /im explorer.exe", "", @SW_HIDE)
                            Run(@WindowsDir & "\explorer.exe", "", "")
                            Dirmove($Favoritespath, $Favoritespath & "_rename")
                    Dirmove($Favoritespath & "_rename", @UserProfileDir & "\收藏夹", 1)
            EndIf                        
                Case 3
                        If @MyDocumentsDir = $Personalpath Then
                            RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders", "Personal", "REG_EXPAND_SZ", "%USERPROFILE%\My Documents")
                            RunWait(@ComSpec & " /c taskkill /f /im explorer.exe", "", @SW_HIDE)
                            Run(@WindowsDir & "\explorer.exe", "", "")
                            Dirmove($Personalpath, $Personalpath & "_rename")
                    Dirmove($Personalpath & "_rename", @UserProfileDir & "\My Documents", 1)
                        EndIf
        EndSwitch
EndFunc

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-7-14 19:22:02 | 显示全部楼层
建议直接贴出代码即可。。。大家可以直接看看问题出在哪里。。下载好像要币吧?
发表于 2011-7-14 21:58:21 | 显示全部楼层
是无法显示gui界面还是无法使用里面的功能?
我这Win7可以打开界面

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-7-14 22:23:37 | 显示全部楼层
看看是怎么回事
发表于 2011-7-15 22:00:29 | 显示全部楼层
不错的软件,源码学习了,谢谢!
发表于 2011-7-15 23:58:31 | 显示全部楼层
自己写的无法运行解决不了?
发错误信息上来让大伙帮你看看!
发表于 2011-7-16 09:12:49 | 显示全部楼层
我这里能运行啊.....
发表于 2011-7-16 10:15:44 | 显示全部楼层
是你自己的电脑存在病毒,检查一下,你的软件目录下是否有个LPK.DLL 病毒文件。
发表于 2011-7-16 10:16:25 | 显示全部楼层
或者有一个叫UPS10.DLL 病毒文件。 文件隐藏起来了,要显示系统文件才会显示出来。
发表于 2011-7-16 10:26:21 | 显示全部楼层
會不會是要用以系統管理員身分執行
WIN7大部分程式無法執行都是這樣
 楼主| 发表于 2011-7-16 17:02:30 | 显示全部楼层
本帖最后由 smooth 于 2011-7-16 17:06 编辑
自己写的无法运行解决不了?
发错误信息上来让大伙帮你看看!
hzxymkb 发表于 2011-7-15 23:58


没有错误信息,就是双击了毫无反应。

在其他很多电脑上都能正确运行,就是我这个笔记本上无法运行,我写这个工具的时候也是用这个笔记本,那时候是XP系统。现在是装了Windows7和XP双系统。
发表于 2011-7-16 17:06:29 | 显示全部楼层
这就奇怪了。
发表于 2011-7-16 17:27:05 | 显示全部楼层
回复 11# smooth


    换个系统看看!
发表于 2011-7-16 19:43:18 | 显示全部楼层
难道是双系统出错了?应该不会。。。。你现在那xp是之前的xp不?连之前编译过的都无法运行就不是au3的问题了,如果不是在两系统中都装了某种会导致au3无法运行的软件(如360)的话,那么就是你装的系统有问题,有可能是阉割版吧?
 楼主| 发表于 2011-7-17 11:56:00 | 显示全部楼层
在我笔记本上的Windows7和XP系统都运行不了,郁闷。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-13 13:10 , Processed in 0.084985 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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