找回密码
 加入
搜索
查看: 4346|回复: 12

USkin.dll文件在XP的SP3系统里面出错问题

  [复制链接]
发表于 2009-12-9 07:42:28 | 显示全部楼层 |阅读模式
本帖最后由 awingu 于 2009-12-11 15:27 编辑

我使用的是3.3.1.6做好的一个简单的界面,然后使用USkin.dll调用皮肤。
编译出来的程序如果不使用upx压缩,运行正常,如果压缩了就变形了,皮肤不正常。

不压缩的情况下,程序的皮肤完美配合。毫无破绽,也非常好用。但是又有另外一个问题。
当我把程序拿到windows xp sp3的系统里面运行的时候,也很正常和漂亮。不过,就是关闭的时候出错。

或许马上就有读者向说用下面的方法可以处理:
Func Quit()
    GUISetState(@SW_HIDE)
    DllCall($dll_, "int:cdecl", "DeInitDecoration")
    DllCall($dll_, "int:cdecl", "RemoveSkin")
    DllClose($dll_)
    Exit
EndFunc
我很明确的说,这个已经添加了,而且不添加的情况下,我在windows xp sp2下使用时退出会错误,加了后解决了这个问题。
但是在sp3的系统里面突出的时候特出现以下这个情况,请看图:


代码没有问题,因为我就算只弄一个空白的窗体去试验也一样的效果。但是只要不使用皮肤则完全没有任何错误。

也尝试过SkinCrafterDll.dll调用皮肤,但是这个调用的皮肤没办法支持标签tab,USkin非常简单实用。
不知道autoit这里为什么那么少关于皮肤的资料。3.3.1.6里面提供了USkin.dll我使用论坛上别人发的USkin.dll效果也一样,用汉化组在autoit里面附带的USkin.dll也一样。
希望能得到前辈们的指点。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;问题最终处理办法;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
换了一个USkin.Dll,我去了易语言那里找了相关的信息,他们处理了这个问题。他们提供了一个DLL文件,我使用了这个DLL文件后,就没有了这个问题,所以,最终关于USkin.dll在SP3系统里面推出一样提示错误的问题,属于USkin.dll自身的问题,下面提供我现在在使用的DLL文件,需要的朋友可以拿去测试一下。我使用这个来弄皮肤完全因为自己懒,懒人用它有什么好处,网上很多windows的主题下载,基本上都可以使用,所以让软件界面更加灵活变动了。



在这里问了好几天都没有人能帮忙处理。或许他们使用的就是这个DLL吧,反正我使用AUTOIT3自带的那个和里面提供的演示使用的那个都有这个问题。结果还是自己几天没有睡好觉找出来的。希望其他人有这个问题的可以用上吧。楼下有关于我使用这个DLL驾载皮肤的代码,啦下去就能看到了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1金钱 +10 收起 理由
pusofalse + 10 感谢主动修改帖子分类为[已解决]。

查看全部评分

发表于 2009-12-9 09:02:40 | 显示全部楼层
请参考
http://www.autoitx.com/forum.php ... hlight=%C6%A4%B7%F4

+个Opt("OnExitFunc","Quit")就可以了
 楼主| 发表于 2009-12-9 09:41:57 | 显示全部楼层
D:\共享目录\New\注册机.au3(61,24) : ERROR: Opt() called with illegal argument 1: "OnExitFunc"
Opt("OnExitFunc","Quit")
~~~~~~~~~~~~~~~~~~~~~~~^
D:\共享目录\New\注册机.au3(64,21) : WARNING: $nMsg possibly not declared/created yet
        $nMsg = GUIGetMsg()
        ~~~~~~~~~~~~~~~~~~~^
D:\共享目录\New\注册机.au3 - 1 error(s), 1 warning(s)
添加后就是这样了
发表于 2009-12-9 12:03:34 | 显示全部楼层
定义 Quit 方法 注意查看一下皮肤调用方法
 楼主| 发表于 2009-12-9 23:12:53 | 显示全部楼层
我都定义好了,不定义的话在XP SP2的系统里面退出会出错,定义后就不会了。很谢谢你的解说。但是在你说之前我早就已经是这样弄了,我发问的那里说得很清楚,现在xpsp2上面运行都正常,退出时不提示错误。但是sp3里面运行正常,退出时错误。你们所说的都试过了。完全没有任何作用。就算直接复制你们成功的案例,一样完全没用,不是光在一台电脑上面测试过,是经过很多台SP3的电脑测试过,全部错误。
 楼主| 发表于 2009-12-10 00:21:03 | 显示全部楼层
而且我也声明了,我用的是Uskin。不是SkinCrafterDll.dll,不要再拿SkinCrafterDll.dll来解答我的提问。

用SkinCrafterDll.dll不会出错我知道。但是我这里问的是关于USkin.dll的问题。


是USkin.dll
不是SkinCrafterDll.dll
 楼主| 发表于 2009-12-10 00:49:10 | 显示全部楼层
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <SliderConstants.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
FileInstall("Uskin.dll",@TempDir & "Uskin.dll",1)
FileInstall("Skin.msstyles",@TempDir & "Skin.msstyles",1)
$skins = @TempDir & "Skin.msstyles"
$Dll_ = DllOpen(@TempDir & "Uskin.dll")
DllCall($Dll_, "int", "USkinInit", "str", "Null", "str", "NULL", "str", $skins)
DllCall($Dll_, "int", "USkinLoadSkin", "str", $skins)
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 341, 231, 224, 214)
$Input1 = GUICtrlCreateInput("Input1", 24, 24, 121, 21)
$Button1 = GUICtrlCreateButton("Button1", 200, 32, 75, 25)
$Group1 = GUICtrlCreateGroup("Group1", 32, 64, 97, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Radio1 = GUICtrlCreateRadio("Radio1", 176, 8, 113, 17)
$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 176, 64, 97, 17)
$Tab1 = GUICtrlCreateTab(16, 112, 313, 113)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
$TabSheet1 = GUICtrlCreateTabItem("TabSheet1")
$Progress1 = GUICtrlCreateProgress(24, 144, 150, 17)
$Slider1 = GUICtrlCreateSlider(24, 176, 150, 45)
$Combo1 = GUICtrlCreateCombo("Combo1", 168, 160, 145, 25)
GUICtrlCreateTabItem("")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

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

        EndSwitch
WEnd

Func Quit()
    GUISetState(@SW_HIDE)
    DllCall($dll_, "int:cdecl", "DeInitDecoration")
    DllCall($dll_, "int:cdecl", "RemoveSkin")
    DllClose($dll_)
        FileDelete( @TempDir & "Skin.msstyles")
        FileDelete(@TempDir & "Uskin.dll")
    Exit
EndFunc
这里是代码,关闭的时候在SP3系统里面提示0x10018180错误。




我不知道到底什么地方出错了,感觉就是Quit()里面的内容和USkin.dll的关闭方式不一样还是什么。
请指点一下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2009-12-10 00:56:57 | 显示全部楼层
本帖最后由 newx 于 2009-12-10 01:24 编辑

不知道对
@TempDir & "xxxxxx.xxx"

@TempDir & "\xxxxxx.xxx"
是怎么理解的?

试运行:
#Include <File.au3>
$sFilePath = @TempDir & "\文件名.扩展名"
_FileCreate($sFilePath)
#Include <File.au3>
$sFilePath = @TempDir & "文件名.扩展名"
_FileCreate($sFilePath)
会是怎样的结果
 楼主| 发表于 2009-12-10 01:58:07 | 显示全部楼层
不清楚楼上的大侠说的是什么,地址和目录我也测试了有\和没有的区别,貌似一样都可以使用,只是有没有目录的区别,程序时正常运行没有问题。

USkin.dll退出错误的问题还是没有得到处理。
发表于 2010-2-28 09:12:47 | 显示全部楼层
楼主精神可嘉值得赞赏
希望大家解决问题后都能像楼主一样把原委说清楚
有一个问题
你说的 :“编译出来的程序如果不使用upx压缩,运行正常,如果压缩了就变形了,皮肤不正常。”
这个问题是不是依旧存在啊?
发表于 2010-5-2 12:48:46 | 显示全部楼层
这个问题没人能解决么?
发表于 2010-5-2 12:49:49 | 显示全部楼层
把quit() 函数里的 DllClose($Dll_) 一行 去掉就没错误了,但是这样会对系统有影响吗?
发表于 2013-12-26 10:18:24 | 显示全部楼层
楼主后面提供的Uskin.dll文件依然有问题,编译时如果压缩了就不对了。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-28 15:31 , Processed in 0.106237 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表