awingu 发表于 2009-12-16 13:01:34

用USkin.dll调用皮肤(镶入式)【案例+源码+皮肤+DLL】

本帖最后由 guland 于 2012-3-1 12:38 编辑

不说废话,直接来张图


因为论坛设置了下载需要买单,所以我这里就不收费了哈,现在网络上面免费的资源越来越少,看看发布后的效果吧,如果支持的多,我陆续弄多点自己学到的,案例上来。

这里使用的皮肤不是u3的格式的,是直接在网上下载的windows主题msstyles后缀的主题文件。
也就是说不是限制死了只能用我这里这个皮肤文件,只要去下载msstyles后缀的主题文件就可以了,比如Skin.msstyles的文件。

下面是文件的源码,给大家省一个下载的费用了。#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_icon=..\..\..\..\我的文档\AutoIT资料\ico\2636\水晶系统桌面图标下载42.ico
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Res_Comment=夏天设计
#AutoIt3Wrapper_Res_Description=夏天设计
#AutoIt3Wrapper_Res_Fileversion=0.0.0.2
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
#AutoIt3Wrapper_Res_LegalCopyright=夏天设计
#AutoIt3Wrapper_Res_SaveSource=y
#AutoIt3Wrapper_Res_Field=设计|夏天
#AutoIt3Wrapper_Res_Field=QQ|173863882
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <DateTimeConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <ListViewConstants.au3>
#include <ProgressConstants.au3>
#include <SliderConstants.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <TreeViewConstants.au3>
#include <WindowsConstants.au3>
Opt("TrayMenuMode", 1) ;这里是设置任务栏图标的菜单,AU3默认的是点击后暂停脚本,使用这个后将取消默认值,值保留现在脚本里面的菜单和操作

;;;皮肤贼如代码-------从这里开始-----------------------------------------------////
FileInstall("USkin.dll", @TempDir & "\USkin.Dll")        ;这里是将脚本目录里面的Uskin.dll镶入到EXE文件里面,当EXE文件运行的时候自动将文件放置临时目录【@TempDir】里面运行。
FileInstall("Skin.msstyles", @TempDir & "\Skin.msstyles")        ;这里是将脚本目录里面的【Skins\Skin.msstyles】文件镶入到EXE文件里面,当EXE文件运行的时候自动将文件放置临时目录【@TempDir】里面运行。
$skins = @TempDir & "\Skin.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=g:\编程\autoit 案例教程\皮肤相关\镶入式\form_skin_install.kxf
$Form_Skin_Install = GUICreate("界面皮肤(镶入式) - 夏天制作", 801, 601, 192, 124)
$MenuItem1 = GUICtrlCreateMenu(" &MenuItem1 ")
$MenuItem4 = GUICtrlCreateMenuItem("MenuItem4", $MenuItem1)
$MenuItem5 = GUICtrlCreateMenuItem("", $MenuItem1)
$MenuItem6 = GUICtrlCreateMenuItem("退出案例", $MenuItem1)
$MenuItem2 = GUICtrlCreateMenu(" M&enuItem2 ")
$MenuItem7 = GUICtrlCreateMenuItem("MenuItem7", $MenuItem2)
$MenuItem8 = GUICtrlCreateMenuItem("MenuItem8", $MenuItem2)
$MenuItem9 = GUICtrlCreateMenuItem("MenuItem9", $MenuItem2)
$MenuItem3 = GUICtrlCreateMenu(" Me&nuItem3 ")
$MenuItem10 = GUICtrlCreateMenuItem("MenuItem10", $MenuItem3)
GUISetIcon("G:\我的文档\AutoIT资料\ico\2636\水晶系统桌面图标下载42.ico")
$Label1 = GUICtrlCreateLabel("本案例由夏天(awingu)提供。", 8, 8, 786, 17, $SS_CENTER)
$Input1 = GUICtrlCreateInput("Input1", 8, 48, 121, 21)
$Edit1 = GUICtrlCreateEdit("", 8, 88, 313, 97)
GUICtrlSetData(-1, "Edit1")
$Button1 = GUICtrlCreateButton("Button1", 136, 48, 75, 25)
$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 232, 48, 81, 17)
$Radio1 = GUICtrlCreateRadio("Radio1", 344, 48, 57, 17)
$List1 = GUICtrlCreateList("", 344, 88, 121, 97)
GUICtrlSetData(-1, "第1行的内容|第2行的内容|第3行的内容|第4行的内容|第5行的内容")
$Combo1 = GUICtrlCreateCombo("Combo1", 416, 48, 105, 25)
GUICtrlSetData(-1, "第1行的内容|第2行的内容|第3行的内容|第4行的内容")
$Combo2 = GUICtrlCreateCombo("", 544, 48, 89, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "第1行的内容|第2行的内容|第3行的内容|第4行的内容|第5行的内容")
$Group1 = GUICtrlCreateGroup("Group1", 488, 88, 297, 97)
$Combo3 = GUICtrlCreateCombo("Combo3", 560, 128, 145, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Slider1 = GUICtrlCreateSlider(48, 192, 150, 45)
$Progress1 = GUICtrlCreateProgress(208, 200, 150, 15)
$Date1 = GUICtrlCreateDate("2009/12/16 12:02:9", 384, 200, 186, 21)
$MonthCal1 = GUICtrlCreateMonthCal("2009/12/16", 8, 232, 267, 154)
$TreeView1 = GUICtrlCreateTreeView(304, 232, 129, 153)
$TreeView1_0 = GUICtrlCreateTreeViewItem("第一项", $TreeView1)
$TreeView1_1 = GUICtrlCreateTreeViewItem("1-1项", $TreeView1_0)
$TreeView1_2 = GUICtrlCreateTreeViewItem("1-1-1项", $TreeView1_1)
$TreeView1_3 = GUICtrlCreateTreeViewItem("第二项", $TreeView1)
$TreeView1_4 = GUICtrlCreateTreeViewItem("2-1项", $TreeView1_3)
$TreeView1_5 = GUICtrlCreateTreeViewItem("2-1-1项", $TreeView1_4)
$TreeView1_6 = GUICtrlCreateTreeViewItem("2-1-2项", $TreeView1_4)
$TreeView1_7 = GUICtrlCreateTreeViewItem("2-2项", $TreeView1_3)
$TreeView1_8 = GUICtrlCreateTreeViewItem("2-3项", $TreeView1_3)
$TreeView1_9 = GUICtrlCreateTreeViewItem("2-3-1项", $TreeView1_8)
$ListView1 = GUICtrlCreateListView("ID|名称|其他", 448, 280, 337, 105)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 120)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 145)
$ListView1_0 = GUICtrlCreateListViewItem("1|夏天|................", $ListView1)
$ListView1_1 = GUICtrlCreateListViewItem("2|冬天|好冷啊!", $ListView1)
$ListView1_2 = GUICtrlCreateListViewItem("3|秋天|没有什么好说的", $ListView1)
$ListView1_3 = GUICtrlCreateListViewItem("4|春天|万物生", $ListView1)
$ListView1_4 = GUICtrlCreateListViewItem("5|每天|也就等于今天啦", $ListView1)
$ListView1_5 = GUICtrlCreateListViewItem("6|明天|永远都不会到的一天", $ListView1)
$ListView1_6 = GUICtrlCreateListViewItem("7|昨天|最新的历史", $ListView1)
$ListView1context = GUICtrlCreateContextMenu($ListView1)
$MenuItem14 = GUICtrlCreateMenuItem("MenuItem14", $ListView1context)
$MenuItem15 = GUICtrlCreateMenuItem("MenuItem15", $ListView1context)
$MenuItem16 = GUICtrlCreateMenuItem("", $ListView1context)
$MenuItem17 = GUICtrlCreateMenuItem("MenuItem17", $ListView1context)
$MenuItem18 = GUICtrlCreateMenuItem("MenuItem18", $ListView1context)
$MenuItem19 = GUICtrlCreateMenuItem("MenuItem19", $ListView1context)
$Tab1 = GUICtrlCreateTab(8, 392, 785, 177)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
$TabSheet1 = GUICtrlCreateTabItem("TabSheet1")
$Input2 = GUICtrlCreateInput("Input2", 32, 424, 121, 21)
$Button2 = GUICtrlCreateButton("Button2", 64, 480, 75, 25)
$Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", 184, 432, 81, 17)
$Radio2 = GUICtrlCreateRadio("Radio2", 184, 456, 65, 17)
$Combo4 = GUICtrlCreateCombo("Combo4", 296, 432, 145, 25)
$Group2 = GUICtrlCreateGroup("Group2", 472, 432, 185, 105)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Label3 = GUICtrlCreateLabel("Label3", 248, 504, 36, 17)
$TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
$Input3 = GUICtrlCreateInput("Input3", 88, 480, 121, 21)
$Button3 = GUICtrlCreateButton("Button3", 296, 464, 75, 25)
$TabSheet3 = GUICtrlCreateTabItem("TabSheet3")
GUICtrlCreateTabItem("")
$Label2 = GUICtrlCreateLabel("可以使用鼠标右键点击下面的列表", 472, 248, 184, 17)
TraySetClick("16")
TraySetIcon("G:\我的文档\AutoIT资料\ico\2636\水晶系统桌面图标下载42.ico")
$MenuItem11 = TrayCreateItem("隐藏界面")
$MenuItem12 = TrayCreateItem("")
$MenuItem13 = TrayCreateItem("退出案例")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Global $Show
While 1
        $nMsg = GUIGetMsg()
        $msg = TrayGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit (Quit())
                        ;End
                Case $MenuItem6
                        Exit (Quit())
        EndSwitch
        Select
                Case $msg = 0
                        ContinueLoop
                Case $msg = $MenuItem11
                        If $Show = 1 Then
                                GUISetState(@SW_SHOW)
                                $Show = 0
                        Else
                                GUISetState(@SW_HIDE)
                                $Show = 1
                        EndIf
                Case $msg = $MenuItem13
                        ExitLoop (Quit())
        EndSelect
WEnd

Func Quit()
        GUISetState(@SW_HIDE)        ;这里先将界面隐藏起来,因为要先关闭皮肤后才关闭软件,所以隐藏界面后关闭皮肤的话就不会看到没有皮肤的界面了。
        DllCall($Dll_, "int", "USkinRemoveSkin")        ;这里是关闭皮肤
        DllCall($Dll_, "int", "USkinExit")                        ;这里是退出皮肤调用的DLL
        DllClose($Dll_)                        ;关闭DLL文件调用
        FileDelete( @TempDir & "\Skins\Skin.msstyles")                ;删除临时目录里面的皮肤文件
        FileDelete(@TempDir & "\Uskin.dll")                ;删除临时目录里面的USkin.dll文件
        Exit                        ;退出脚本(关闭软件)
EndFunc   ;==>Quit下面这里是所有文件打包,下载后用winrar解压就可以看到所有文件了。也为大家省了点费用了。


我的电脑里面安装的系统不多,只在XP的sp2和sp3系统里面测试过,没有问题。

希望能帮助到有需要的人吧。


声明:下载附件的时候需要30金,不是我发帖的时候设置的,我发帖的时候没有设置需要任何费用。而这里的费用是论坛默认的,所有附件都会需要扣金。所以,大家不要认为是我设置了这个价格。

make2855 发表于 2009-12-16 13:13:51

我坐了沙发,的确不错,精神可嘉!

卫和谐 发表于 2009-12-16 13:14:18

支持一下,希望能够好用!!

seeking 发表于 2009-12-16 16:18:10

顶一下,虽然有了SkinCrafter,但还是多多益善

zhenglei 发表于 2009-12-16 16:50:39

顶。。看看是什么东东

871224 发表于 2009-12-16 16:52:14

支持下~~~~

llztt 发表于 2009-12-16 18:49:15

这个很好啊,我测试正常啊,你们呢
SkinCrafter很多漂亮皮肤,看着不错,但用起来不带劲啊,尤其是按钮什么的,显示不全,变样了。。

qq1244521 发表于 2009-12-16 19:47:45

嘿嘿 收藏啦

Netfox 发表于 2009-12-16 20:10:10

娃哈哈,这个东东需要呢,````不错,要顶上去.```

Netfox 发表于 2009-12-16 20:11:43

为了赚钱,不惜再顶.

Netfox 发表于 2009-12-16 20:25:40

赚钱好辛苦啊,```

Netfox 发表于 2009-12-16 20:32:45

啊,受不了,网速太慢,`,``要顶贴都不行

81206954 发表于 2009-12-16 21:37:11

不错啊~~~~~~~

xjwb198600 发表于 2009-12-16 21:58:03

对初学者来说,是很好的资源,辛苦了.

crwmart 发表于 2009-12-16 22:12:42

这东西不错 顶了先 回头研究
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 用USkin.dll调用皮肤(镶入式)【案例+源码+皮肤+DLL】