newuser 发表于 2011-6-2 15:04:39

GUI:利用.msstyles换肤窗口

#cs ____________________________________

脚本目的:利用.msstyles换肤窗口
    准备工作:
                1.必须文件:皮肤文件.msstyles和USkin.dll;
    窗口换肤过程:
                1.fileinstall()所需文件;
                2.定义变量$skins和$DLL_存储换肤文件;
                3.利用DLLCALL()启用皮肤。
        注意事项:
                1。注意用fileinstall()载入文件的源路径必须是字符不能有变量;
                2.注意路径“\”符号必须存在,否则因路径导致无法找到更换皮肤所需文件;
                3.注意退出时将载入文件删除。
        特色:
                1.通过样式BitOR($WS_SYSMENU, $WS_POPUP, $WS_POPUPWINDOW, $WS_BORDER), $WS_EX_TOOLWINDOW的使用将窗口3个最大(小)话按钮拿掉;
                2.通过DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $Form1, "int", 450, "long", 0x00050010)实现退出窗口逐渐隐去效果
                3.创建TAB加样式 ,$TCS_VERTICAL,就竖排显示,但必须#include <TabConstants.au3>的支持
                4.学会利用GUICtrlCreateLabel()创建横线和竖线,样式分别为$SS_ETCHEDHORZ和$SS_ETCHEDVERT
#ce _______________脚本开始_________________

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
FileInstall("USkin.dll", @TempDir & "\USkin.Dll") ;将USkin.dll载入到临时目录下
FileInstall("sprout.msstyles", @TempDir & "\sprout.msstyles");将sprout.msstyles载入到临时目录下
$skins = @TempDir & "\sprout.msstyles" ;这里设定【$skins】为皮肤路径
$Dll_ = DllOpen(@TempDir & "\USkin.dll") ;这里设定【$Dll_】为皮肤调用文件【USkin.dll】的路径
DllCall($Dll_, "int", "USkinInit", "str", "Null", "str", "NULL", "str", $skins) ;载入皮肤到DLL返回值
DllCall($Dll_, "int", "USkinLoadSkin", "str", $skins) ;启用皮肤
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 600, 447, 192, 124)
GUICtrlCreatePic("setup1.jpg",-1,-1)
GUICtrlCreatePic("setup1.jpg",150,-1)
GUICtrlCreatePic("setup1.jpg",300,-1)
GUICtrlCreatePic("setup1.jpg",448,-1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###


While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Quit()

        EndSwitch
WEnd
Func Quit()
        GUISetState(@SW_HIDE) ;这里先将界面隐藏起来,因为要先关闭皮肤后才关闭软件,所以隐藏界面后关闭皮肤的话就不会看到没有皮肤的界面了。
        DllCall($Dll_, "int", "USkinRemoveSkin") ;这里是关闭皮肤
        DllCall($Dll_, "int", "USkinExit") ;这里是退出皮肤调用的DLL
        DllClose($Dll_) ;关闭DLL文件调用
        ;FileDelete($skins) ;删除临时目录里面的皮肤文件
        ;fileDelete(@ScriptDir& "\Uskin.dll") ;删除临时目录里面的USkin.dll文件
        Exit ;退出脚本(关闭软件)
EndFunc   ;==>Quit

komaau3 发表于 2011-6-2 15:20:01

注释很详细,表示感谢!!!

dyd 发表于 2011-6-2 16:52:38

好贴,顶起来

xms77 发表于 2011-6-2 21:45:02

好贴,顶起来

xiaozui 发表于 2011-6-3 10:39:00

USkin.dll能提供下这个文件吗?

newuser 发表于 2011-6-3 11:08:04

回复 5# xiaozui
论坛搜索!

sonny 发表于 2011-6-3 11:08:37

USkin.dll论坛有的吧,我不知道怎么上传附件给你。

fangbaiyu 发表于 2011-10-24 15:12:59

谢谢楼主
MARK

clonecd 发表于 2012-5-7 22:29:34

这个太实在了,好帖要好好保留啊。

jby09 发表于 2012-5-15 14:43:18

注释很详细,表示感谢

zhoujinshi 发表于 2013-12-26 09:34:58

执行到
DllClose($Dll_) ;关闭DLL文件
时要报错

zhoujinshi 发表于 2013-12-26 09:53:52

编译后咋没效果呢?

jasonny 发表于 2013-12-28 12:19:31

收藏學習了,感謝~

joyran 发表于 2013-12-28 13:36:43

{:face (327):}顶个.....

fanan_666 发表于 2014-1-3 09:37:18

谢谢楼主分享!
页: [1] 2
查看完整版本: GUI:利用.msstyles换肤窗口