woeiwoei 发表于 2010-1-24 04:58:48

请教双窗口关闭的问题!

本帖最后由 woeiwoei 于 2010-1-24 12:57 编辑

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

#Region ### START Koda GUI section ### Form=
Dim $Dll
FileInstall("SkinCrafterDll.dll",@WindowsDir & "\temp\","1")
FileInstall("vista.skf",@WindowsDir & "\temp\","1")
$Form1 = GUICreate("系统自主维护 By·MjM", 244, 144, 373, 157)
_SkinGUI(@WindowsDir & "\temp\SkinCrafterDll.dll" ,@WindowsDir & "\temp\vista.skf", $Form1)
$xthf = GUICtrlCreateButton("系统恢复", 8, 16, 65, 33, 0)
GUICtrlSetFont(-1, 9, 400, 0, "黑体")
$qdaz = GUICtrlCreateButton("驱动安装", 88, 16, 65, 33, 0)
GUICtrlSetFont(-1, 9, 400, 0, "黑体")
$fbl = GUICtrlCreateButton("分辨率", 168, 16, 65, 33, 0)
GUICtrlSetFont(-1, 9, 400, 0, "黑体")
$gip = GUICtrlCreateButton("更改IP", 8, 64, 65, 33, 0)
GUICtrlSetFont(-1, 9, 400, 0, "黑体")
$xtyh = GUICtrlCreateButton("系统优化", 88, 64, 65, 33, 0)
GUICtrlSetFont(-1, 9, 400, 0, "黑体")
$xgj = GUICtrlCreateButton("小工具", 168, 64, 65, 33, 0)
GUICtrlSetFont(-1, 9, 400, 0, "黑体")
$help = GUICtrlCreateButton("帮助", 16, 112, 49, 17, 0)
GUICtrlSetFont(-1, 9, 400, 0, "黑体")
$lxw = GUICtrlCreateButton("联系我", 96, 111, 49, 17, 0)
GUICtrlSetFont(-1, 9, 400, 0, "黑体")
$exit = GUICtrlCreateButton("退出", 176, 112, 49, 17, 0)
GUICtrlSetFont(-1, 9, 400, 0, "黑体")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Func _SkinGUI($SkincrafterDll, $SkincrafterSkin, $Handle)
   $Dll = DllOpen($SkincrafterDll)
   DllCall($Dll, "int:cdecl", "InitLicenKeys", "wstr", "1", "wstr", "", "wstr", "1@1.com", "wstr", "1")
   DllCall($Dll, "int:cdecl", "InitDecoration", "int", 1)
   DllCall($Dll, "int:cdecl", "LoadSkinFromFile", "wstr", $SkincrafterSkin)
   DllCall($Dll, "int:cdecl", "DecorateAs", "int", $Handle, "int", 25)
   DllCall($Dll, "int:cdecl", "ApplySkin")
EndFunc

Func Quit()
    GUISetState(@SW_HIDE)
    DllCall($dll, "int:cdecl", "DeInitDecoration")
    DllCall($dll, "int:cdecl", "RemoveSkin")
    DllClose($dll)
        FileDelete(@WindowsDir & "\temp\SkinCrafterDll.dll")
        FileDelete(@WindowsDir & "\temp\vista.skf")
    Exit
EndFunc

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $xthf
                        BOOT() ;恢复系统
                Case $qdaz
                        DRV() ;安装驱动
                Case $fbl
                        RESO() ;设置分辨率
                Case $gip
                        SETIP() ;设置IP
                Case $xtyh
                        OPIT() ;系统垃圾清理和一些优化
                Case $xgj
                        Tool() ;一些系统工具
                Case $help
                        HELP() ;本程序的说明
                Case $lxw
                        Contact() ;与我联系
                Case $exit
                        Exit
        EndSwitch
WEnd

Func BOOT()
        $a = MsgBox(0, "提示", " 确定 后请您选择您的备份文件,如没备份请先备份!")
If $a Then
Run("E:\Tools\Ghost\boot.exe", "", @SW_HIDE)
Exit
EndIf
EndFunc   ;==>BOOT

Func DRV()
        Run("E:\TOOLS\SkyD9.9es\DrvS3.exe")
EndFunc   ;==>DRV

Func RESO()
        Run("E:\Tools\分辨率\分辨率.exe")
EndFunc   ;==>RESO

Func SETIP()
        Run("E:\Tools\ip\MacToIp1.0.exe")
EndFunc   ;==>SETIP       
       
Func OPIT()
        Run("E:\Tools\系统优化\mstool.exe")
EndFunc   ;==>RESO

Func Tool()
        ShellExecute("E:\Tools\小工具")
EndFunc


Func HELP()
        $form1_2= GUICreate("程序说明", 300, 200, 352, 200)
        $Label1 = GUICtrlCreateLabel("" & @CRLF & "                      说 明" & @CRLF & "" & @CRLF & "" & @CRLF & "1、恢复系统前请您先备份!" & @CRLF & "" & @CRLF & "2、驱动用的是自由天空9.9ES的驱动包." & @CRLF & ""& @CRLF & "3、设置IP根据需要请修改E:\Tools\IP下的 "& @CRLF &"   Mac2Ip.ini文件,请勿修改文件名!" & @CRLF & "" & @CRLF & "4、这是本人第一个小程序,如有意见请联系我!" & @CRLF & "   我的MAIL:an_8437@163.com QQ:570264002", 0, 0, 400, 300)
        GUISetState(@SW_SHOW)
EndFunc   ;==>HELP

Func Contact()
        MsgBox(0,"您好","作者MAIL:an_8437@163.com,QQ:570264002"& @CRLF & "欢迎您的意见和建议!")
        Run(@ProgramFilesDir&"\Outlook Express\msimn.exe")
EndFunc
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
               FileDelete(@WindowsDir & "\temp\SkinCrafterDll.dll")
             FileDelete(@WindowsDir & "\temp\vista.skf")
                        Exit

        EndSwitch
WEnd运行程序后 点 帮助 出来一个 GUI 但是 点帮助 右上角的 关闭时,程序也会关闭。。
高手帮帮忙呀···我只想看完 帮助后 关闭 帮助的那个窗口 不想关闭程序呀!:face (32):

lxz 发表于 2010-1-24 07:36:18

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

#Region ### START Koda GUI section ### Form=
Dim $Dll
FileInstall("SkinCrafterDll.dll",@WindowsDir & "\temp\","1")
FileInstall("vista.skf",@WindowsDir & "\temp\","1")

$Form1 = GUICreate("系统自主维护 By·MjM", 244, 144, 373, 157)
_SkinGUI(@WindowsDir & "\temp\SkinCrafterDll.dll" ,@WindowsDir & "\temp\vista.skf", $Form1)
$xthf = GUICtrlCreateButton("系统恢复", 8, 16, 65, 33, 0)
GUICtrlSetFont(-1, 9, 400, 0, "黑体")
$qdaz = GUICtrlCreateButton("驱动安装", 88, 16, 65, 33, 0)
GUICtrlSetFont(-1, 9, 400, 0, "黑体")
$fbl = GUICtrlCreateButton("分辨率", 168, 16, 65, 33, 0)
GUICtrlSetFont(-1, 9, 400, 0, "黑体")
$gip = GUICtrlCreateButton("更改IP", 8, 64, 65, 33, 0)
GUICtrlSetFont(-1, 9, 400, 0, "黑体")
$xtyh = GUICtrlCreateButton("系统优化", 88, 64, 65, 33, 0)
GUICtrlSetFont(-1, 9, 400, 0, "黑体")
$xgj = GUICtrlCreateButton("小工具", 168, 64, 65, 33, 0)
GUICtrlSetFont(-1, 9, 400, 0, "黑体")
$help = GUICtrlCreateButton("帮助", 16, 112, 49, 17, 0)
GUICtrlSetFont(-1, 9, 400, 0, "黑体")
$lxw = GUICtrlCreateButton("联系我", 96, 111, 49, 17, 0)
GUICtrlSetFont(-1, 9, 400, 0, "黑体")
$exit = GUICtrlCreateButton("退出", 176, 112, 49, 17, 0)
GUICtrlSetFont(-1, 9, 400, 0, "黑体")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
      $nMsg = GUIGetMsg()
      Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $xthf
                        BOOT() ;恢复系统
                Case $qdaz
                        DRV() ;安装驱动
                Case $fbl
                        RESO() ;设置分辨率
                Case $gip
                        SETIP() ;设置IP
                Case $xtyh
                        OPIT() ;系统垃圾清理和一些优化
                Case $xgj
                        Tool() ;一些系统工具
                Case $help
                     GUISetState(@SW_DISABLE,$Form1)
                     HELP() ;本程序的说明
                     GUISetState(@SW_ENABLE,$Form1)
                Case $lxw
                        Contact() ;与我联系
                Case $exit
                        Exit
      EndSwitch
WEnd

Func BOOT()
      $a = MsgBox(0, "提示", " 确定 后请您选择您的备份文件,如没备份请先备份!")
If $a Then
Run("E:\Tools\Ghost\boot.exe", "", @SW_HIDE)
Exit
EndIf
EndFunc   ;==>BOOT

Func DRV()
      Run("E:\TOOLS\SkyD9.9es\DrvS3.exe")
EndFunc   ;==>DRV

Func RESO()
      Run("E:\Tools\分辨率\分辨率.exe")
EndFunc   ;==>RESO

Func SETIP()
      Run("E:\Tools\ip\MacToIp1.0.exe")
EndFunc   ;==>SETIP      
      
Func OPIT()
      Run("E:\Tools\系统优化\mstool.exe")
EndFunc   ;==>RESO

Func Tool()
      ShellExecute("E:\Tools\小工具")
EndFunc

Func HELP()
      $form1_2= GUICreate("程序说明", 300, 200, 352, 200)
      $Label1 = GUICtrlCreateLabel("" & @CRLF & "                      说 明" & @CRLF & "" & @CRLF & "" & @CRLF & "1、恢复系统前请您先备份!" & @CRLF & "" & @CRLF & "2、驱动用的是自由天空9.9ES的驱动包." & @CRLF & ""& @CRLF & "3、设置IP根据需要请修改E:\Tools\IP下的 "& @CRLF &"   Mac2Ip.ini文件,请勿修改文件名!" & @CRLF & "" & @CRLF & "4、这是本人第一个小程序,如有意见请联系我!" & @CRLF & "   我的MAIL:an_8437@163.com QQ:570264002", 0, 0, 400, 300)
      GUISetState(@SW_SHOW)
While 1
    $nMsg = GUIGetMsg()
      Switch $nMsg
   Case $GUI_EVENT_CLOSE
      GUIDelete($form1_2)
   WinActivate("$form1_2")
   GUISetState(@SW_ENABLE, $Form1)
       ExitLoop
   EndSwitch
WEnd
EndFunc   ;==>HELP

Func Contact()
      MsgBox(0,"您好","作者MAIL:an_8437@163.com,QQ:570264002"& @CRLF & "欢迎您的意见和建议!")
      Run(@ProgramFilesDir&"\Outlook Express\msimn.exe")
EndFunc

Func _SkinGUI($SkincrafterDll, $SkincrafterSkin, $Handle)
   $Dll = DllOpen($SkincrafterDll)
   DllCall($Dll, "int:cdecl", "InitLicenKeys", "wstr", "1", "wstr", "", "wstr", "1@1.com", "wstr", "1")
   DllCall($Dll, "int:cdecl", "InitDecoration", "int", 1)
   DllCall($Dll, "int:cdecl", "LoadSkinFromFile", "wstr", $SkincrafterSkin)
   DllCall($Dll, "int:cdecl", "DecorateAs", "int", $Handle, "int", 25)
   DllCall($Dll, "int:cdecl", "ApplySkin")
EndFunc

Func Quit()
    GUISetState(@SW_HIDE)
    DllCall($dll, "int:cdecl", "DeInitDecoration")
    DllCall($dll, "int:cdecl", "RemoveSkin")
    DllClose($dll)
      FileDelete(@WindowsDir & "\temp\SkinCrafterDll.dll")
      FileDelete(@WindowsDir & "\temp\vista.skf")
    Exit
EndFunc

While 1
      $nMsg = GUIGetMsg()
      Switch $nMsg
                Case $GUI_EVENT_CLOSE
               FileDelete(@WindowsDir & "\temp\SkinCrafterDll.dll")
             FileDelete(@WindowsDir & "\temp\vista.skf")
                        Exit

      EndSwitch
WEnd这样试试......

qq342252004 发表于 2010-1-24 08:31:26

不明白楼主的意思 看你的代码是单窗口的哦。

skyfree 发表于 2010-1-24 09:01:14

也可以改用MsgBox来实现,更加简单

woeiwoei 发表于 2010-1-24 12:57:14

回复 2# lxz

恩 找到原因了。学习了。谢谢!!

jazzlang 发表于 2010-1-24 18:18:20

楼主,原因是什么啊,这个问题我也没搞定呢。
页: [1]
查看完整版本: 请教双窗口关闭的问题!