shiqu623 发表于 2012-7-28 10:59:00

如何在淡入淡出效果的同时加置顶窗口呢?付代码

本帖最后由 shiqu623 于 2012-7-28 11:01 编辑

#include <GUIConstantsEx.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("测试", 200, 100, 200, 200)
$Button = GUICtrlCreateButton("关闭", 162, 128, 40, 20)
_SetWindowPos($Form1, 200, 200) ;这里设置窗口始终在最前端
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
   Case $GUI_EVENT_CLOSE, $Button
    Exit

EndSwitch

WEnd

Func _SetWindowPos($hWnd, $x, $y) ;使用API将窗体保持最前
Local $cX, $cY
Dim $hWndInsertAfter = -1
Dim $wFlags = 1
DllCall("user32.dll", "long", "SetWindowPos", "long", $hWnd, "long", $hWndInsertAfter, "long", $x, _
    "long", $y, "long", $cX, "long", $cY, "long", $wFlags)
EndFunc   ;==>_SetWindowPos
想在以上代码中加上淡入淡出效果,并使程序运行后以淡入淡出效果退出

yhxhappy 发表于 2012-7-28 11:35:03

窗口置顶不需要这么麻烦吧,添加 $WS_EX_TOPMOST 样式就OK啦
淡入可以用窗口特效,淡出我用了调节透明度的办法,不知道还有没有其他方法。
关于窗口特效,可以到这里去看看
http://www.autoitx.com/forum.php?mod=viewthread&tid=20201&highlight=%B4%B0%BF%DA%CC%D8%D0%A7#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("测试", 400, 400, 200, 200, $WS_POPUP, $WS_EX_TOPMOST)
$Button = GUICtrlCreateButton("关闭", 162, 128, 40, 20)

DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $Form1, "int", 1000, "long", 0x00080000)                ;1000 表示时间,越大过程越久
GUISetState(@SW_SHOW)


While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
        Case $GUI_EVENT_CLOSE, $Button
                For $GUI_TRANS = 240 To 0 Step -5        ;STEP值越小,过程越久
                        If $GUI_TRANS > 0 Then WinSetTrans($Form1, "", $GUI_TRANS)
                        Sleep(10)                                                ;Sleep值越大,过程越久
                Next
                Exit
        EndSwitch
WEnd

shiqu623 发表于 2012-7-28 12:36:40

回复 2# yhxhappy


    谢谢 简单实用 很是感谢

shiqu623 发表于 2012-7-28 12:58:55

回复 2# yhxhappy


    还得麻烦你 要是让窗口有边框怎么弄 还有就是不要关闭按钮,让程序运行完关闭并携带淡入淡出效果该怎么弄,多谢

yhxhappy 发表于 2012-7-28 13:25:04

$Form1 = GUICreate("测试", 400, 400, 200, 200, -1, $WS_EX_TOPMOST)

shiqu623 发表于 2012-7-28 13:37:35

回复 5# yhxhappy While 1

      $nMsg = GUIGetMsg()

      Switch $nMsg

      Case $GUI_EVENT_CLOSE, $Button

                For $GUI_TRANS = 240 To 0 Step -5      ;STEP值越小,过程越久

                        If $GUI_TRANS > 0 Then WinSetTrans($Form1, "", $GUI_TRANS)

                        Sleep(10)                                                ;Sleep值越大,过程越久

                Next

                Exit

      EndSwitch

WEnd
这里是点击关闭按钮 退出效果有淡入淡出,但是我想让程序运行完自动关闭的时候是淡入淡出效果应该怎么弄啊

shiqu623 发表于 2012-7-28 13:38:25

{:face (396):}回复 5# yhxhappy


    呵呵 真是麻烦你了,我保证是最后一问

yhxhappy 发表于 2012-7-28 14:38:19

你把 Case $GUI_EVENT_CLOSE, $Button 下的内容放到自动关闭代码的前面不就行了

shiqu623 发表于 2012-7-28 16:01:09

回复 8# yhxhappy


    弱弱的问一句,自动关闭代码在哪里?实在是找不到了,没有太多的时间看资料

yhxhappy 发表于 2012-7-28 17:22:32

回复 9# shiqu623


    你得把你写的完整代码上传我才知道在哪

shiqu623 发表于 2012-7-28 17:33:47

回复 10# yhxhappy


    #Region ;**** 参数创建于 ACNWrapper_GUI ****
#PRE_icon=C:\Windows\system32\SHELL32.dll|-16
#PRE_Outfile=..\Documents\Desktop\开机优化.exe
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Opt("GUIOnEventMode", 1)
Opt("TrayiconDebug", 1)
Opt("WinDetectHiddenText", 1)

#Region ### START Koda GUI section ### Form=
DirCreate ("d:\开机优化工具箱" ) ;创建文件夹
FileInstall("1.jpg","d:\开机优化工具箱\1.jpg")
FileInstall("分辨率设置.exe","d:\开机优化工具箱\分辨率设置.exe");打包图片,编译图片(图片资源必须与脚本在同一文件夹内)
FileInstall("关闭多余的IDE通道.exe","d:\开机优化工具箱\关闭多余的IDE通道.exe")
Dim $dll
$hwnd = GUICreate("完美XP优化程序",600, 400, 310, 100,-1, $WS_EX_TOPMOST) ;$WS_POPUP 无边框
$Pic1 = GUICtrlCreatePic("d:\开机优化工具箱\1.jpg",0,0,600,400);图片
$Progress1 = GUICtrlCreateProgress(59,370, 475, 11)
;GUICtrlCreateLabel("完美XP正在最后优化,键鼠已锁定。", 0, 0, 75, 25)
;GUICtrlCreateLabel(&quot;本网吧网速过快,请看管好随身物品。&quot;, 10, 25, 190, 15)

DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00080000)                ;1000 表示时间,越大过程越久
;GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")
GUICtrlSetData(-1, 20)
GUISetState(@SW_SHOW)

#EndRegion ### END Koda GUI section ###


inst_main()
delfile()
;_exit()



While 1

      $nMsg = GUIGetMsg()

      Switch $nMsg

      Case $GUI_EVENT_CLOSE

                For $GUI_TRANS = 240 To 0 Step -5      ;STEP值越小,过程越久

                        If $GUI_TRANS > 0 Then WinSetTrans($hwnd, "", $GUI_TRANS)

                        Sleep(10)                                                ;Sleep值越大,过程越久

                Next
                Exit

      EndSwitch

WEnd


Func inst_main()
      
                  GUICtrlSetData($Progress1, 10)
            run("RUNDLL32 netshell.dll,StartNCW")
      ;BlockInput(1);屏蔽鼠标键盘
                winwaitactive("新建连接向导","新建连接向导")
      send("!N")
                winwaitactive("新建连接向导","连接到 Internet(&C)")
            send("!N")
            winwaitactive("新建连接向导","从 Internet 服务提供商(ISP)列表选择(&L)")
      send("!M!N")
      winwaitactive("新建连接向导","新建连接向导")
      send("!U!N")
      winwaitactive("新建连接向导","在下面框中输入您的 ISP 的名称")
      send(Eval("宽带连接"))
      send("!N!N")
                winwaitactive("新建连接向导","正在完成新建连接向导")
      send("!S{ENTER}")
If WinActive("网络配置","确定") then
Send("{ENTER}{esc}")
EndIf
                GUICtrlSetData($Progress1, 30)
      WinWaitClose("新建连接向导","正在完成新建连接向导")
                run("d:\开机优化工具箱\关闭多余的IDE通道.exe")
      winwaitactive("启动速度优化","安装前请确认已经装好驱动程序,按确定键进行优化")
      Send("{ENTER}")
                GUICtrlSetData($Progress1, 50)
      WinWaitClose ("启动速度优化","安装前请确认已经装好驱动程序,按确定键进行优化")
      run("d:\开机优化工具箱\分辨率设置.exe")
                winwaitactive("分辨率智能设置","显示器智能判断")
            Send("{tab}{tab}{ENTER}")               
      Sleep(5000);暂停5秒               
      Send("{esc}")
                GUICtrlSetData($Progress1, 80)
                WinWaitClose("分辨率智能设置","显示器智能判断")
      DirRemove("d:\开机优化工具箱",1 );删除文件夹
                BlockInput(0);开启鼠标键盘
      Run(@ComSpec&' /c ping 127.0.0.1 -n 3&del /q "'&@ScriptFullPath&'"',@ScriptDir,@SW_HIDE)
                GUICtrlSetData($Progress1, 100)
               
               
Exit
      
EndFunc   
Func delfile()
      
                ;FileDelete(@TempDir & "\1.jpg");删除图片

Exit
EndFunc

shiqu623 发表于 2012-7-28 17:38:49

还有就是这个是所搜文件夹并运行123文件夹下文件的代码我要是把运行文件改为批量释放文件并强制替换123文件夹内的文件改怎么改#Include <File.au3>
$Drive= DriveGetDrive( "all" )

For $i = 1 to $Drive
       Find_folder($Drive[$i])
Next

Func Find_folder($searchdir)                        
$search = FileFindFirstFile($searchdir & "\*")
If $search = -1 Then return -1
While 1
    $file = FileFindNextFile($search)
    If @error Then
         FileClose($search)
         return
      ElseIf stringinstr(FileGetAttrib($searchdir & "\" & $file),"D") then
               If $file="Autosoft" And FileExists($searchdir & "\" & $file&"\1.exe") Then
                        $FileList=_FileListToArray($searchdir & "\" & $file,'*.exe',1)
                         If Not @error Then
                                 For $j=1 To $FileList
                                       ShellExecute($searchdir & "\" & $file&"\"&$FileList[$j])
                                 Next
                         EndIf
             Else
                     Find_folder($searchdir & "\" & $file)
               EndIf
    EndIf
WEnd
EndFunc

yhxhappy 发表于 2012-7-28 19:58:36

回复 11# shiqu623

只是在你的代码上加了点东西,没测试过,你自己看看吧#Region ;**** 参数创建于 ACNWrapper_GUI ****
#PRE_icon=C:\Windows\system32\SHELL32.dll|-16
#PRE_Outfile=..\Documents\Desktop\开机优化.exe
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Opt("GUIOnEventMode", 1)
Opt("TrayiconDebug", 1)
Opt("WinDetectHiddenText", 1)

#Region ### START Koda GUI section ### Form=
DirCreate ("d:\开机优化工具箱" ) ;创建文件夹
FileInstall("1.jpg","d:\开机优化工具箱\1.jpg")
FileInstall("分辨率设置.exe","d:\开机优化工具箱\分辨率设置.exe");打包图片,编译图片(图片资源必须与脚本在同一文件夹内)
FileInstall("关闭多余的IDE通道.exe","d:\开机优化工具箱\关闭多余的IDE通道.exe")
Dim $dll
$hwnd = GUICreate("完美XP优化程序",600, 400, 310, 100,-1, $WS_EX_TOPMOST) ;$WS_POPUP 无边框
$Pic1 = GUICtrlCreatePic("d:\开机优化工具箱\1.jpg",0,0,600,400);图片
$Progress1 = GUICtrlCreateProgress(59,370, 475, 11)
;GUICtrlCreateLabel("完美XP正在最后优化,键鼠已锁定。", 0, 0, 75, 25)
;GUICtrlCreateLabel(&quot;本网吧网速过快,请看管好随身物品。&quot;, 10, 25, 190, 15)

DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00080000)                ;1000 表示时间,越大过程越久
;GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")
GUICtrlSetData(-1, 20)
GUISetState(@SW_SHOW)

#EndRegion ### END Koda GUI section ###


inst_main()
delfile()
;_exit()



While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
        Case $GUI_EVENT_CLOSE
                _Exit()
        EndSwitch
WEnd


Func inst_main()      
        GUICtrlSetData($Progress1, 10)
        run("RUNDLL32 netshell.dll,StartNCW")
        ;BlockInput(1);屏蔽鼠标键盘
        winwaitactive("新建连接向导","新建连接向导")
        send("!N")
       
        winwaitactive("新建连接向导","连接到 Internet(&C)")
        send("!N")
       
        winwaitactive("新建连接向导","从 Internet 服务提供商(ISP)列表选择(&L)")
        send("!M!N")
       
        winwaitactive("新建连接向导","新建连接向导")
        send("!U!N")
       
        winwaitactive("新建连接向导","在下面框中输入您的 ISP 的名称")
        send(Eval("宽带连接"))
        send("!N!N")
       
        winwaitactive("新建连接向导","正在完成新建连接向导")
        send("!S{ENTER}")
        If WinActive("网络配置","确定") then
                Send("{ENTER}{esc}")
        EndIf
        GUICtrlSetData($Progress1, 30)
        WinWaitClose("新建连接向导","正在完成新建连接向导")
       
        run("d:\开机优化工具箱\关闭多余的IDE通道.exe")
        winwaitactive("启动速度优化","安装前请确认已经装好驱动程序,按确定键进行优化")
        Send("{ENTER}")
       
        GUICtrlSetData($Progress1, 50)
        WinWaitClose ("启动速度优化","安装前请确认已经装好驱动程序,按确定键进行优化")
        run("d:\开机优化工具箱\分辨率设置.exe")
        winwaitactive("分辨率智能设置","显示器智能判断")
        Send("{tab}{tab}{ENTER}")               
       
        Sleep(5000);暂停5秒               
        Send("{esc}")
       
        GUICtrlSetData($Progress1, 80)
        WinWaitClose("分辨率智能设置","显示器智能判断")
       
        DirRemove("d:\开机优化工具箱",1 );删除文件夹
        BlockInput(0);开启鼠标键盘
        Run(@ComSpec&' /c ping 127.0.0.1 -n 3&del /q "'&@ScriptFullPath&'"',@ScriptDir,@SW_HIDE)
        GUICtrlSetData($Progress1, 100)
               
        _Exit()
      
EndFunc
       
Func delfile()      
        ;FileDelete(@TempDir & "\1.jpg");删除图片

        _Exit()
EndFunc

Func _Exit()
        For $GUI_TRANS = 240 To 0 Step -5      ;STEP值越小,过程越久
                If $GUI_TRANS > 0 Then WinSetTrans($hwnd, "", $GUI_TRANS)
                Sleep(10)                                                ;Sleep值越大,过程越久
        Next
        Exit       
EndFunc

shiqu623 发表于 2012-7-28 22:27:55

{:face (88):}回复 13# yhxhappy


    多谢今天真是太感谢你了。源码OK,简单易行!!!
页: [1]
查看完整版本: 如何在淡入淡出效果的同时加置顶窗口呢?付代码