本帖最后由 newuser 于 2010-5-20 07:52 编辑
参考以下代码,编译前运行.皮肤显示,编译后,看不到有皮肤效果了,可是该代码中的fileinstall()已经应用了啊,那么所包含的文件就应该被装入到编译后的.EXE中啊?可是为什么没有效果?#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
FileInstall("USkin.dll", @TempDir & "\USkin.Dll") ;这里是将脚本目录里面的Uskin.dll镶入到EXE文件里面,当EXE文件运行的时候自动将文件放置临时目录【@TempDir】里面运行。
FileInstall("sprout.msstyles", @TempDir & "\Dogmax.msstyles");这里是将脚本目录里面的【Skins\Skin.msstyles】文件镶入到EXE文件里面,当EXE文件运行的时候自动将文件放置临时目录【@TempDir】里面运行。
$skins = @ScriptDir & "\Mecca.msstyles" ;这里设定【$skins】为皮肤路径
$Dll_ = DllOpen(@ScriptDir & "\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", 633, 447, 192, 124)
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(@TempDir & $skins) ;删除临时目录里面的皮肤文件
fileDelete(@TempDir & "\Uskin.dll") ;删除临时目录里面的USkin.dll文件
Exit ;退出脚本(关闭软件)
EndFunc ;==>Quit
|