[原创]用MASM32编程获取windows类型

原创 2005年04月29日 04:03:00
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;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

1) 获取类型特征typeTraits [原创,泛型编程,自由下载转载,需注明出处]

由于在我们的项目中,不能使用std及其它的主流库(boost等),在需要判断一些类型特征及类型转换时,就只能自己写这些功能了。这面是这些功能的实现(当然boost实现得更好:如果你的项目中允许使用bo...

Windows10下搭建汇编语言开发环境(利用DOSBOX和MASM32)

学一门语言,最好的方法便是在实践中学习。对于不少初学者来说,首先要面临的是如何搭建开发平台/环境的问题。由于汇编语言的特殊性,不少初学者会担心自己直接对寄存器进行操作会不会导致系统崩溃或者系统硬件损坏...
  • doniexun
  • doniexun
  • 2015年05月02日 11:08
  • 67804

MASM32编程获取任务栏高度

  • 2008年09月21日 12:23
  • 2KB
  • 下载

MASM32编程实现运行时自动提示要求以管理员帐户来运行

为提高系统安全性,微软从Windows Vista开始引入UAC(User Account Control,用户帐户控制),这一机制要求用户在执行可能会影响计算机运行的操作或执行更改影响其他用户的设置...

Windows编程 Win32API中常见的数据类型

Win32API有一套和C\C++基本数据类型不同的数据类型. C\C++语言的数据类型有如下几个缺陷: 数据类型平台相关,在不同平台上,同一个数据类型可能占用不同的空间大小。典型的,在16位系...
  • RitMan
  • RitMan
  • 2015年12月31日 15:20
  • 2186

使用vs2010和masm32搭建win32汇编语言编程编译环境

看到题目,就有人说了,masm32和RadASM搭配多好,绝配,你使virtual studio,纯是烧包。 不错,vs在C语言上有语法高亮和自动填充,但是汇编就没有了。 RadASM在汇...

12) 类型安全的任意类CAnyObject [原创,泛型编程,自由下载转载,需注明出处]

anyObject.h , 这是泛型库中13个源文件中的一个,不知道csdn有没有自动上传源代码的功能,有知道怎么用的朋友请告诉我一声。 这个源文件可以封装任意类到一个共同的类中,不需要封装的类之间有...

2) 转换类型typeConvert [原创,泛型编程,自由下载转载,需注明出处]

这些基于typeTraits提供的一些类型转换功能,比如典型的if-else等等,判断两个类型是否相同,是否原始类型相同,,是否可转换,是否值可转换,是否基类派生类,是否序列类,是否数组,是否是原子类...

【原创】Matlab与.NET基于类型安全的接口混合编程入门

本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html       Matlab和C#混合编程文章目录 :http://www.cnb...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[原创]用MASM32编程获取windows类型
举报原因:
原因补充:

(最多只允许输入30个字)