现在的位置: 首页 > 综合 > 正文

用MASM32调用WinRAR中的对话框资源

2013年08月25日 ⁄ 综合 ⁄ 共 1278字 ⁄ 字号 评论关闭

purpleendurer 原创

2005.11.18 第1

注意:要用Alt+F4关闭它。

.386
.model flat, stdcall
option casemap:none
include /masm32/include/windows.inc
include /masm32/include/kernel32.inc
include /masm32/include/user32.inc
includelib /masm32/lib/user32.lib
includelib /masm32/lib/kernel32.lib

DlgProc PROTO :DWORD,:DWORD,:DWORD,:DWORD

.data
g_szWinRAR db "c:/program files/winrar/winrar.exe", 0
g_szDlgCaption db "GETARC", 0

g_szFailLoadLibrary db "LoadLibrary", 0

.data?
g_hRAR  HANDLE ?

.code
start:
            invoke LoadLibrary, ADDR g_szWinRAR
            .if eax!=NULL
                mov g_hRAR, eax

                invoke DialogBoxParam, g_hRAR, ADDR g_szDlgCaption, NULL, ADDR DlgProc, NULL

                invoke FreeLibrary, g_hRAR

                mov eax, OFFSET g_szDlgCaption
            .else
                mov eax , OFFSET g_szFailLoadLibrary
            .endif
            invoke MessageBox, NULL, eax, eax, NULL
            invoke ExitProcess, NULL

DlgProc proc hDlg: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM
    .IF uMsg==WM_INITDIALOG
        invoke  MessageBox, NULL, OFFSET g_szWinRAR, OFFSET g_szWinRAR, MB_SYSTEMMODAL
       
        invoke GetWindowLong, hDlg, GWL_STYLE
        or eax, WS_MINIMIZEBOX or WS_MAXIMIZEBOX or WS_SYSMENU
        invoke SetWindowLong, hDlg, GWL_STYLE, eax

    .ELSE
        invoke DefWindowProc, hDlg, uMsg, wParam, lParam
        ret
    .ENDIF
    mov eax,TRUE
    ret
DlgProc endp

end start

抱歉!评论已关闭.