在masm32中获取IE版本的方法2

;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;Filename:getIEver1.asm

;Function:get&displayversionofIE
;Author:purpleendurer
;Develop:win2Kpro+masm32

;log
;--------------------------------------------------------- ;2005.10.23Created!
;Usetheversionoffileshlwapi.dllastheIEversion.
;InmyPC,theversionofIEis6.0.2800.1106
;andtheversionofshlwapi.dllis6.0.2800.1740,
;butthisprogramdisplayedversionis6.0.2800,
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;下载:您可以到http://purpleendurer.ys168.com的/myworks/demo_only中
;下载源代码和可执行文件


.386
.model flat, stdcall
option casemap: none
include/masm32/ include/windows.inc

include/masm32/ include/user32.inc
include/masm32/ include/kernel32.inc

includelib/masm32/ lib/user32.lib
includelib/masm32/ lib/kernel32.lib

GetIEVerStr PROTO:LPSTR

m_m2m MACROd1,d2
pushd2
popd1
ENDM

DllVersionInfoSTRUCT
cbSize dword?
dwMajorVersion dword?
dwMinorVersion dword?
dwBuildNumber dword?
dwPlatformID dword?
DllVersionInfo ENDS



.data
g_szTitle db "IE版本",0
g_fmt4IEVer db "InternetExplorer%d.%d.%d",0
g_FailLoadDLL db "不能装载"
g_szShlwapiDLL db "shlwapi.dll",0
g_FailGetProcAddr db "不能获取函数"
g_szDllGetVersion db "DllGetVersion",0

.data?
g_szIEVer db256dup(?)
g_DVIDllVersionInfo<?>
g_lpfnDllGetVersion DWORD?
g_hDllHANDLE?

.code
start:
m_m2mg_DVI.cbSize,SIZEOFg_DVI
invokeGetIEVerStr, ADDRg_szIEVer
.if eax==1
mov eax, OFFSETg_FailLoadDLL
.elseif eax==2
mov eax, OFFSETg_FailGetProcAddr
.else
mov eax, OFFSETg_szIEVer
.endif
invokeMessageBox,NULL, eax, OFFSETg_szTitle,MB_OK

invokeExitProcess,NULL

GetIEVerStr PROClpszIEVer:LPSTR
invokeLoadLibrary, ADDRg_szShlwapiDLL
movg_hDll, eax
.if eax==NULL
m_m2m eax,1
ret
.endif

invokeGetProcAddress,g_hDll, ADDRg_szDllGetVersion
movg_lpfnDllGetVersion, eax
.if eax==NULL
invokeFreeLibrary,g_hDll
m_m2m eax,2
ret
.endif

;m_m2mDVI.cbSize,SIZEOFg_DVI
push OFFSETg_DVI
callg_lpfnDllGetVersion

invokewsprintf,lpszIEVer, ADDRg_fmt4IEVer,g_DVI.dwMajorVersion,/
g_DVI.dwMinorVersion,g_DVI.dwBuildNumber
invokeFreeLibrary,g_hDll
xor eax, eax ;m_m2meax,0
ret
GetIEVerStr ENDP

endstart
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值