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

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

;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

;Function: Display the Windows type

; Author:purple endurer

; Develop: MASM32 V8

;Log

;------------------------------------

; 2005-04-29 Create

;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

.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

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  GetVersionEx,  ADDR g_OsVerInfo

    .if  eax != 0

        invoke GetWinType

        invoke  MessageBox, NULL,  eax,  eax, 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  eax,  OFFSET g_szUnknow ;假设返回值为Unknow

    mov  ebx, g_OsVerInfo.dwPlatformId

    .if   ebx==1

        mov  ebx, g_OsVerInfo.dwMinorVersion

        .IF  ebx==0

            mov  eax,  OFFSET g_szWin95

        .ELSEIF  ebx==10

            mov  eax,  OFFSET g_szWin98

        .ELSEIF  ebx==90

            mov  eax,  OFFSET g_szWinMe

        .ENDIF

    .elseif  ebx==2

        mov  ebx, g_OsVerInfo.dwMajorVersion

        .IF  ebx==3

            mov  eax,  OFFSET g_szWinNT351

        .ELSEIF  ebx==4

            mov  eax,  OFFSET g_szWinNT40

        .ELSEIF  ebx==5

            mov  ebx, g_OsVerInfo.dwMinorVersion

            .if  ebx==0

                mov  eax,  OFFSET g_szWin2000

            .elseif  ebx==1

                mov  eax,  OFFSET g_szWinXP

            .elseif  ebx==2

                mov  eax,  OFFSET g_szWin2003

            .endif

        .ENDIF

    .endif

    pop  ebx

    ret

GetWinType  endp

end start


相关文章
|
4天前
|
JavaScript 前端开发 API
MASM32编程通过WMI获取Windows计划任务
MASM32编程通过WMI获取Windows计划任务
|
3天前
|
网络协议 API Windows
MASM32编程调用 API函数RtlIpv6AddressToString,windows 10 容易,Windows 7 折腾
MASM32编程调用 API函数RtlIpv6AddressToString,windows 10 容易,Windows 7 折腾
|
5天前
|
API Windows
MASM32编程获取Windows当前桌面主题名
MASM32编程获取Windows当前桌面主题名
|
5天前
|
小程序 Windows
MASM32编写的程序在Windows 7,10下运行正常,但在Win XP下运行时只闻其声不见其形的故障
MASM32编写的程序在Windows 7,10下运行正常,但在Win XP下运行时只闻其声不见其形的故障
|
2月前
|
编译器 开发工具 C语言
解锁QtCreator跨界神技!Windows下轻松驾驭OpenCV动态库,让你的跨平台开发如虎添翼,秒变视觉编程大师!
【8月更文挑战第4天】QtCreator是一款强大的跨平台IDE,便于创建多平台应用。本教程教你如何在Windows环境下集成OpenCV库至Qt项目。首先,下载匹配MinGW的OpenCV预编译版并解压。接着,在QtCreator中新建或打开项目,并在.pro文件中添加OpenCV的头文件和库文件路径。确保编译器设置正确。随后编写测试代码,例如加载和显示图片,并进行编译运行。完成这些步骤后,你就能在QtCreator中利用OpenCV进行图像处理开发了。
136 6
|
2月前
|
数据库 Windows
超详细步骤解析:从零开始,手把手教你使用 Visual Studio 打造你的第一个 Windows Forms 应用程序,菜鸟也能轻松上手的编程入门指南来了!
【8月更文挑战第31天】创建你的第一个Windows Forms (WinForms) 应用程序是一个激动人心的过程,尤其适合编程新手。本指南将带你逐步完成一个简单WinForms 应用的开发。首先,在Visual Studio 中创建一个“Windows Forms App (.NET)”项目,命名为“我的第一个WinForms 应用”。接着,在空白窗体中添加一个按钮和一个标签控件,并设置按钮文本为“点击我”。然后,为按钮添加点击事件处理程序`button1_Click`,实现点击按钮后更新标签文本为“你好,你刚刚点击了按钮!”。
98 0
|
4月前
|
Java C++
jni编程(windows+JDK11+clion)
jni编程(windows+JDK11+clion)
|
开发工具 C语言 Windows
Qt在Windows下的三种编程环境搭建
从QT官网可以得知其支持的平台、编译器和调试器的信息如图所示:   http://qt-project.org/doc/qtcreator-3.0/creator-debugger-engines.html (Home | Docs | Qt Creator 3.0 | Debuggingand Analyzing | Setting Up Debugger)     本篇主要讲解QT在Windows操作系统下的三种编程环境搭建。
1305 0
|
28天前
|
网络安全 虚拟化 Windows
windows 11安装openSSH server 遇到的"kex_exchange_identification: read: Connection reset"问题
windows 11安装openSSH server 遇到的"kex_exchange_identification: read: Connection reset"问题
|
2月前
|
PHP Windows
【Azure App Service for Windows】 PHP应用出现500 : The page cannot be displayed because an internal server error has occurred. 错误
【Azure App Service for Windows】 PHP应用出现500 : The page cannot be displayed because an internal server error has occurred. 错误