Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > 汇编语言 > [原创]用MASM32获取windows类型
【标  题】:[原创]用MASM32获取windows类型
【关键字】:MASM32,windows
【来  源】:http://blog.csdn.net/Purpleendurer/archive/2005/04/29/367464.aspx

[原创]用MASM32获取windows类型

Your Ad Here ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;Function: Display the Windows type
; Author:purple endurer
; Develop: MASM32 V8
;Log
;------------------------------------
; 2005-04-29 Create
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
.386
.model flatstdcall
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

GetWinType PROTO


.data
g_szWin95       db "Windows 95", 0
g_szWin98       db "Windows 98", 0
g_szWinMe       db "Windows Mellinnium", 0
g_szWinNT351    db "Windows NT 3.51", 0
g_szWinNT40     db "Windows NT 4.0", 0
g_szWin2000     db "Windows 2000", 0
g_szWinXP       db "Windows XP", 0
g_szWin2003     db "Windows Server 2003", 0
g_szUnknow      db "Unknow", 0

.data?
g_OsVerInfo OSVERSIONINFO <>

.code
start:
    mov g_OsVerInfo.dwOSVersionInfoSize, SIZEOF OSVERSIONINFO
    invoke GetVersionExADDR g_OsVerInfo
    .if eax != 0
        invoke GetWinType
        invoke MessageBox, NULL, eaxeax, MB_OK
    .endif
    invoke ExitProcess, NULL

;//////////////////////////////////////////
;Function: Get the Windows type
; Input: g_OsVerInfo
; Output: Pointer to the string of windows type
;//////////////////////////////////////////
GetWinType proc
    push ebx    ;用ebx作为临时变量
    mov eaxOFFSET g_szUnknow;假设返回值为Unknow
    mov ebx, g_OsVerInfo.dwPlatformId
    .if  ebx==1
        mov ebx, g_OsVerInfo.dwMinorVersion
        .IF ebx==0
            mov eaxOFFSET g_szWin95
        .ELSEIF ebx==10
            mov eaxOFFSET g_szWin98
        .ELSEIF ebx==90
            mov eaxOFFSET g_szWinMe
        .ENDIF
    .elseif ebx==2
        mov ebx, g_OsVerInfo.dwMajorVersion
        .IF ebx==3
            mov eaxOFFSET g_szWinNT351
        .ELSEIF ebx==4
            mov eaxOFFSET g_szWinNT40
        .ELSEIF ebx==5
            mov ebx, g_OsVerInfo.dwMinorVersion
            .if ebx==0
                mov eaxOFFSET g_szWin2000
            .elseif ebx==1
                mov eaxOFFSET g_szWinXP
            .elseif ebx==2
                mov eaxOFFSET g_szWin2003
            .endif
        .ENDIF
    .endif

    pop ebx

    ret
GetWinType endp

end start
显示按下的键的编码的汇编源代码:【上一篇】
使用8253实现使用1到8弹奏歌曲:【下一篇】
【相关文章】
  • 【原创】用MASM32操作INI文件
  • 【原创】用MASM32制作屏幕保护程序的问题及解决
  • 【原创】用MASM32写的黑屏保护程序
  • WINDOWS的钩子函数知识与汇编实例
  • 解读Windows2000/XP系统服务(转)
  • 在Masm32中如何静态链接自己编写的库文件
  • 在masm32中获取并显示IE版本的方法1
  • 在masm32中获取IE版本的方法2
  • 用masm32创建快捷方式--使用com的演示程序
  • Intellij的ClearCase插件在windows下注意两点
  • 【随机文章】
  • Ubuntu自动更新的类别
  • 我替一位仁兄改的n进制数相加的问题
  • rac环境下更改归档模式
  • 增强WebLogic session的粘度
  • AutoCAD输出图像文件技巧
  • Ubuntu Linux:如何添加中文输入法
  • RAID6的普及
  • sqlldr
  • 支持XP下托盘栏气球提示的托盘单元
  • 使用JDOM解析XML
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.