skyfree 发表于 2008-5-17 15:58:40

关于AU3加载皮肤的问题

偶尔见到一个仁兄的AU3 GUI界面加载了挺漂亮的皮肤,我问他怎么做的,他只是敷衍的告诉我说到下面的网站看看就明白了
http://www.skincrafter.com/skingal.php#
可惜我英文水平有限,没看明白,而且找到的提供的实例都是以C++、C#等语言为实例的,不知道AU3的怎么弄

在这个网站下载的皮肤外观为skf为后缀,哪位老兄能赐教一下用AU3怎么加载这种皮肤啊

[ 本帖最后由 skyfree 于 2008-5-17 16:44 编辑 ]

陌上风 发表于 2008-5-17 16:06:16

我也不懂,以前在有个源代码里看到有部分,给你看看是否有帮助(原文件已经找不到,大概是这个样子)。
加载皮肤:
FileInstall("style.skf", @TempDir& "\style.skf",1)

退出的时候加入删除皮肤代码:
FileDelete ( @TempDir&"\style.skf" )

skyfree 发表于 2008-5-17 16:11:25

……

FileInstall只是把皮肤从AU3程序中解包出来,并不是加载……

帮忙找找怎么加载,谢谢老兄了!:face (36):

llztt 发表于 2008-5-17 16:13:55

楼主是自由天空么,哈哈??
应该是这样用的:
$mainwindow = GUICreate("这里是主题", 600, 500)
_SkinGUI("SkinCrafterDll.dll", "Vista.skf", $mainwindow)

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

需要SkinCrafterDll.dll 和这网上下的SKF皮肤文件

skyfree 发表于 2008-5-17 16:18:15

嘿嘿,正是在下。谢谢您的回答,方便的话能把SkinCrafterDll.dll也上传一下么?或直接传给我也行,我QQ:165718402

llztt 发表于 2008-5-17 16:26:00

我下过两个的, 两个不一样大,其中一个,能正常使用,但在程序退出时报告内存不能读, 当时就一个VISTA皮肤文件, 不确定是皮肤问题还是这文件错误来

上传的这个测试了几个皮肤都可以正常使用

llztt 发表于 2008-5-17 16:32:40

不过测试时, 在SCITE里F5, 正常显示, 退出程序就报AUTOIT3.EXE错误,但是编译后运行没问题, 一切OK
那个皮肤网站很不错,真想把所有皮肤都给打包下来...

记的你论坛里发的工具都是VISTA皮肤的, 还以为你使用VISTA皮肤呢,看来是你系统本就是VISTA ??

skyfree 发表于 2008-5-17 16:33:33

……

我的系统是VISTA,所以截图就都是那样的了……

谢谢你了!

sanhen 发表于 2008-5-17 17:11:22

不知你上边的DLL是不是一区修正的。原论坛发的是破解有问题的。

最新没问题的,应该是一区兄弟修正的。

AU3调用应该是这样,退出也要函数处理的。这样不会出错了。

;
;
Func Quit()
    GUISetState(@SW_HIDE)
    DllCall($dll, "int:cdecl", "DeInitDecoration")
    DllCall($dll, "int:cdecl", "RemoveSkin")
    DllClose($dll)
        ;DirRemove(@AppDataDir&"\skin",1)
    Exit
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      ;==_SkinGUI
;
;

skyfree 发表于 2008-5-17 17:12:44

谢谢补充!

skyfree 发表于 2008-5-17 17:17:52

$Dll是不是要Global一下?

llztt 发表于 2008-5-17 17:20:12

哦, 退出那段, 确实忘了, 哈哈

恩,我发的那个版本好象是2.7的,刚才找了几个破解的, 有2.8 和3.0的, 可惜都是唬人的, ...全是DEMO

sanhen 发表于 2008-5-17 17:23:52

嗯。加上这句就好Global $Dll

关于2。8的最新破解版,我发到中文资料区吧。
不过可能需要金钱下载。为了论坛发展需要。

llztt 发表于 2008-5-17 17:24:43

哈哈, 我去等着下去

[ 本帖最后由 llztt 于 2008-5-17 17:26 编辑 ]

跨日 发表于 2008-5-20 19:01:51

楼上的兄弟原来是在这里 瞄到的呀
:face (33):
原来是SKY老大问的问题呀
页: [1] 2
查看完整版本: 关于AU3加载皮肤的问题