;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;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
;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