注册 登录
编程论坛 汇编论坛

发个新版的USkin

zklhp 发布于 2009-08-04 01:02, 15970 次点击
首先感谢非虫老大给我们介绍这么好的东东 一下子解决了我写的程序的界面问题

不过总看那个就有些厌倦了 于是上网上找了一下 发现这个USkin好像有新版 转了半天弄了一个 发过来罢

不过这个inc文件俺没写 就用非虫老大的罢~
28 回复
#2
zklhp2009-08-04 01:07
先发这个开发包

只有本站会员才能查看附件,请 登录
#3
zklhp2009-08-04 01:12
貌似现在的用的是.msstyles 发几个偶找的罢

全是网上找的

只有本站会员才能查看附件,请 登录
#4
zklhp2009-08-04 01:15
发个例子罢 就是那个查询在线状态的 偶把这些都复制到那个目录里了 换着看看罢

只有本站会员才能查看附件,请 登录
#5
zklhp2009-08-04 01:15
自己顶 美化界面 呵呵
#6
春色三分2009-08-04 11:45
牛,一点多钟还没睡!
#7
zklhp2009-08-04 19:37
以下是引用春色三分在2009-8-4 11:45的发言:

牛,一点多钟还没睡!


呵呵 夜猫子~
#8
非虫2009-08-07 17:26
这么好的帖子,我都没顶,支持个!!
#9
东海一鱼2009-09-12 13:46
发现了一个超级‘酷’的SkinLib。没有声明支持A64但X64却支持。牛啊。

http://www.



[ 本帖最后由 东海一鱼 于 2009-9-12 13:49 编辑 ]
#10
zjjzff12009-10-29 11:24
楼上的skincrafter怎么用在汇编里啊?
我是新手,他们主页上没有用在汇编和sdk里的例子,你能否说下
#11
东海一鱼2009-10-29 13:38
回复 10楼 zjjzff1
使用方法很简单:他支持两种接口:API COM
对汇编程序原来说API方式更简单一些:

API接口: (用Pe Explorer察看:)
只有本站会员才能查看附件,请 登录


COM接口:
只有本站会员才能查看附件,请 登录


官方有很多高级语言调用COM接口的例子。API接口语义与COM一致。
如果你想尝试使用COM借口方式,可以参考我的Midi库的代码。

最后:
    这个库效果很好,但不适合汇编使用,原因是太庞大了(DLL本身还可以忍受,但是还需要VC2005 or VC2008的RunTime环境)。
#12
zjjzff12009-10-29 18:16
我还是不清楚,能否加个qq,或者邮件方式联系
版主一定要帮帮忙啊
#13
东海一鱼2009-10-29 19:33
抱歉,我没有QQ.

我写了一个测试,你可以参考一下。

头文件

程序代码:
include windows.inc
include kernel32.inc
include user32.inc
include Comctl32.inc
include shell32.inc
 
includelib kernel32.lib
includelib user32.lib
includelib Comctl32.lib
includelib shell32.lib
 
BSTR typedef DWORD
 
DlgProc                            PROTO     :HWND,:UINT,:WPARAM,:LPARAM
 
InitLcenKeys                             typedef          PROTO      C :BSTR,:BSTR,:BSTR,:BSTR
InitDecoration                           typedef          PROTO        C :BOOL
LoadSkinFromFile                    typedef         PROTO       C :BSTR
ApplySkin                                   typedef         PROTO      C
RemoveSkin                              typedef          PROTO     C
DeInitDecoration                      typedef          PROTO      C
DecorateAs                               typedef         PROTO      C :LONG, :LONG
IncludeWnd                               typedef         PROTO      C :LONG,:LONG
ExcludeWnd                              typedef         PROTO      C :LONG,:LONG
SetCustomSkinWnd                  typedef         PROTO       C :LONG,:BSTR,:BOOL
GetSkinCopyRight                    typedef         PROTO       C :BSTR,:BSTR,:BSTR,:BSTR,:BSTR
UpdateControl                           typedef            PROTO      C :LONG
UpdateWnd                                typedef         PROTO      C :LONG
AddAdditionalThread                typedef            PROTO      C
DeleteAdditionalThread           typedef            PROTO      C
 
pInitLicn                                      typedef        ptr  InitLcenKeys
pInitDec                                      typedef        ptr  InitDecoration
pLoadSkin                               typedef        ptr  LoadSkinFromFile
pAppSkin                                 typedef        ptr  ApplySkin
pMoveSkin                              typedef        ptr  RemoveSkin
pDeInitDec                                  typedef        ptr  DeInitDecoration
pIncludeWnd                              typedef        ptr  IncludeWnd
pExcludeWnd                             typedef        ptr  ExcludeWnd
pSetCustWnd                             typedef        ptr  SetCustomSkinWnd
pGetSkinCopyRight                  typedef        ptr  GetSkinCopyRight
pUpdateControl                         typedef        ptr  UpdateControl
pAddAdditionalThread              typedef        ptr  AddAdditionalThread
pDeleteAdditionalThread         typedef        ptr  DeleteAdditionalThread
 
CTEXT MACRO y:VARARG
        LOCAL sym
 
    CONST segment dword private 'DATA'
        IFIDNI <y>,<>
            sym db 0
        ELSE
            sym db y,0
        ENDIF
    CONST ends
 
        EXITM <OFFSET sym>
    ENDM
 
 
 
IDD_DIALOG1                    equ 101
IDC_BTN1                        equ 1001
IDC_SBR1                        equ 1006
IDC_PGB1                        equ 1002
 
 
 
;#########################################################################
 
.data?
 
hInstance                dd ?
hDll                                 dd ?  
 
FunInitLicn                    pInitLicn ?
FunInitDec                    pInitDec ?
FunLoadSkin                    pLoadSkin  ?
FunAppSkin                  pAppSkin  ?
FunDecInitDec                 pDeInitDec ?  
 
Buf                                db  1024 dup(?)

调用跟普通WIN32API没有区别,只是因为它内部使用Unicode的关系,一些函数没有直接Invoke 而采用了call手工入栈方式。
再有要注意的就是所有函数声明全部为C调用方式,手工入栈的话注意调用后清栈。

程序代码:
.386
.model flat, stdcall  ;32 bit memory model
option casemap :none  ;case sensitive
 
include CSkinDll.inc
 
.code
 
start:
 
    invoke GetModuleHandle,NULL
    mov        hInstance,eax
 
       invoke InitCommonControls
       invoke LoadLibrary,CTEXT("SkinDll.dll")                                           ;加载DLL
        mov hDll,eax
        invoke GetProcAddress,hDll,CTEXT("InitLicenKeys")                                ;获得API地址
        mov     FunInitLicn,eax
        invoke GetProcAddress,hDll,CTEXT("InitDecoration")
        mov FunInitDec,eax
        invoke GetProcAddress,hDll,CTEXT("LoadSkinFromFile")
        mov FunLoadSkin,eax
        invoke GetProcAddress,hDll,CTEXT("ApplySkin")
        mov FunAppSkin,eax
        invoke GetProcAddress,hDll,CTEXT("DeInitDecoration")
        mov FunDecInitDec,eax            
         
        invoke MultiByteToWideChar,CP_ACP,0,CTEXT("DEMOSKINCRAFTERLICENCE"),-1,addr Buf,128                ;都是Unicode字串
        lea eax,Buf
        push eax     
         
        invoke MultiByteToWideChar,CP_ACP,0,CTEXT("support@),-1,addr Buf + 128,128
        lea eax,Buf
        add eax,128
        push eax     
         
        invoke MultiByteToWideChar,CP_ACP,0,CTEXT("),-1,addr Buf + 128 * 2,128
        lea eax,Buf
        add eax,128 * 2
        push eax     
         
        invoke MultiByteToWideChar,CP_ACP,0,CTEXT("SKINCRAFTER"),-1,addr Buf + 128 * 3,128
        lea eax,Buf
        add eax,128 * 3
        push eax         
         
        ;invoke MultiByteToWideChar,CP_ACP,0,CTEXT("0"),-1,addr Buf + 128 * 4,128
        ;lea eax,Buf
        ;add eax,128 * 4
        ;push eax     
         
        Call FunInitLicn                                                          ;调用函数
        add esp,16
         
        mov eax,1
        push eax
        Call FunInitDec                                                           ;调用函数

        pop ecx         
    invoke DialogBoxParam,hInstance,IDD_DIALOG1,NULL,addr DlgProc,NULL
    invoke ExitProcess,0
 
;########################################################################
 
DlgProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
 
    ;LOCAL Buf[1024]:byte
     
    mov        eax,uMsg
    .if eax==WM_INITDIALOG
                 
    .elseif eax==WM_COMMAND
        mov eax,wParam
        .if eax == IDC_BTN1
            
            invoke MultiByteToWideChar,CP_ACP,0,CTEXT("Stylish.skf"),-1,addr Buf + 128 * 5,128
            lea eax,Buf
            add eax,128 * 5
            push eax     
                     
            Call FunLoadSkin                           ;调用函数

            pop ecx
            
            invoke FunAppSkin
            
            invoke SendDlgItemMessage,hWin,IDC_PGB1,PBM_SETPOS,50,0                     
        .endif
    .elseif eax==WM_CLOSE
        .if hDll         
            invoke FunDecInitDec                           ;调用函数

            invoke FreeLibrary,hDll
        .endif
        invoke EndDialog,hWin,0
    .else
        mov        eax,FALSE
        ret
    .endif
    mov        eax,TRUE
    ret
 
DlgProc endp
 
end start
写得匆忙,很多地方没有很好处理,你领会一下意思好了。详细使用参考官方帮助。

[ 本帖最后由 东海一鱼 于 2009-10-29 19:35 编辑 ]
#14
zjjzff12009-10-30 12:43
太谢谢你了,版主,希望你不要嫌我烦哦

这个版块我太喜欢了.
#15
zjjzff12009-10-31 08:53
最后一个问题,我下载的是skincrafter3,他里面有SkinCrafterDll_vs2005.dll,SkinCrafterDll_vs2005_VB.dll,SkinCrafterDll_vs2008.dll这么三个
没有直接的SkinDll.dll
我应该用哪个?
#16
东海一鱼2009-10-31 21:29
啊,文档里有说明的。

SkinCrafterDll_vs2005.dll、SkinCrafterDll_vs2008.dll这两个分别使用vc2005、vc2008编译的的库文件。你用哪个都行。注意分发给用户使用的时候要带上各自的Runtime环境包。

SkinCrafterDll_vs2005_VB.dll我没仔细看,估计不是双接口。可能是纯COM接口的Activex控件封装形式。
#17
GoldenSpider2010-05-15 19:18
不能不顶
#18
ok100fen2010-05-19 21:59
干什么用的?
能不能简单介绍一下啊?
#19
通许2010-09-01 04:34
什么用的饿
#20
w1175717822010-10-31 22:38
谢谢分享.
#21
lucky5635912010-11-23 07:54
谁这么不要脸?
#22
vfdff2010-11-27 00:53
这些东西什么作用的?
#23
kimper2010-12-18 15:43
下了看看,学习学习~XXLZ
#24
qiu11232011-06-10 00:23
偶是新手,求指教,这个是什么东东,学了大半年还是不会编程啊,痛苦
#25
罗全2011-10-25 23:53
顶下,菜鸟也要试弄一下。
#26
于祥2012-04-29 00:35
#27
水哥2012-08-17 13:41
虫子的SKIN皮肤破解了不少了,多谢楼主收藏了
#28
qinjiao2012-09-08 16:56
先顶一个吧
#29
蚯蚓翔龙2015-04-11 15:47
回复 10楼 zjjzff1
上面有用到win32的例子
1