python使用ctypes模块调用windowsapi获取系统版本示例


Posted in Python onApril 17, 2014

python使用ctypes模块调用windows api GetVersionEx获取当前系统版本,没有使用python32

#!c:/python27/python.exe
#-*- coding:utf-8 -*-
"通过调用Window API判断当前系统版本"
# 演示通过ctypes调用windows api函数.
# 作者已经知道python32能够实现相同功能
# 语句末尾加分号,纯属个人习惯
# 仅作部分版本判断,更详细的版本判断推荐系统OSVERSIONINFOEX结构体
import ctypes;
class OSINFO(ctypes.Structure):
    _fields_ = [
        ("dwOSVersionInfoSize",ctypes.c_long),
        ("dwMajorVersion",ctypes.c_long),
        ("dwMinorVersion",ctypes.c_long),
        ("dwBuildNumber",ctypes.c_long),
        ("dwPlatformId",ctypes.c_long),
        ("szCSDVersion",ctypes.c_char*128)
    ];
def GetSystemVersionString():
    kernel32 = ctypes.windll.LoadLibrary("kernel32.dll");
    os = OSINFO();
    os.dwOSVersionInfoSize = ctypes.sizeof(os);
    if kernel32.GetVersionExA(ctypes.byref(os))==0:
        return "Null Version";
    if os.dwPlatformId==1: #windows 95/98/me
        if os.dwMajorVersion==4 and os.dwMinorVersion==0:
            verStr = "windows 95";
        elif os.dwMajorVersion==4 and os.dwMinorVersion==10:
            verStr = "windows 98";
        elif os.dwMajorVersion==4 and os.dwMinorVersion==90:
            verStr = "windows me";
        else:
            verStr = "unknown version";
    elif os.dwPlatformId==2: #windows vista/server 2008/server 2003/xp/2000/nt
        if os.dwMajorVersion==4 and os.dwMinorVersion==0:
            verStr = "windows nt 4.0";
        elif os.dwMajorVersion==5 and os.dwMinorVersion==0:
            verStr = "windows 2000";
        elif os.dwMajorVersion==5 and os.dwMinorVersion==1:
            verStr = "windows xp";
        elif os.dwMajorVersion==5 and os.dwMinorVersion==2:
            verStr = "windows 2003";
        elif os.dwMajorVersion==6 and os.dwMinorVersion==0:
            verStr = "windows vista"; # or 2008
        elif os.dwMajorVersion>=0:
            verStr = "windows 7";
        else:
            verStr = "unknown version";
    else:
        return "unknown Version";
    return verStr+" build"+str(os.dwBuildNumber)+" "+ctypes.string_at(os.szCSDVersion);
if __name__ == "__main__":
    print(GetSystemVersionString());
Python 相关文章推荐
Python struct.unpack
Sep 06 Python
Python实现爬取逐浪小说的方法
Jul 07 Python
Python 遍历列表里面序号和值的方法(三种)
Feb 17 Python
对python读取CT医学图像的实例详解
Jan 24 Python
Python+opencv+pyaudio实现带声音屏幕录制
Dec 23 Python
python 实现简单的FTP程序
Dec 27 Python
pytorch 图像预处理之减去均值,除以方差的实例
Jan 02 Python
Python pip使用超时问题解决方案
Aug 03 Python
python 服务器运行代码报错ModuleNotFoundError的解决办法
Sep 16 Python
python操作xlsx格式文件并读取
Jun 02 Python
Python List remove()实例用法详解
Aug 02 Python
python中数组和列表的简单实例
Mar 25 Python
python调用windows api锁定计算机示例
Apr 17 #Python
python实现监控windows服务并自动启动服务示例
Apr 17 #Python
解决python写的windows服务不能启动的问题
Apr 15 #Python
Python和php通信乱码问题解决方法
Apr 15 #Python
Python获取脚本所在目录的正确方法
Apr 15 #Python
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
Apr 15 #Python
python中使用sys模板和logging模块获取行号和函数名的方法
Apr 15 #Python
You might like
评分9.0以上的动画电影,剧情除了经典还很燃
2020/03/04 日漫
php set_time_limit(0) 设置程序执行时间的函数
2010/05/26 PHP
hadoop中一些常用的命令介绍
2013/06/19 PHP
ThinkPHP查询语句与关联查询用法实例
2014/11/01 PHP
PHP实现登录验证码校验功能
2018/05/17 PHP
js获取时间并实现字符串和时间戳之间的转换
2015/01/05 Javascript
原生js结合html5制作简易的双色子游戏
2015/03/30 Javascript
jQuery的remove()方法使用详解
2015/08/11 Javascript
Bootstrap CSS组件之下拉菜单(dropdown)
2016/12/17 Javascript
解决vue2中使用axios http请求出现的问题
2018/03/05 Javascript
实战node静态文件服务器的示例代码
2018/03/08 Javascript
javascript、php关键字搜索函数的使用方法
2018/05/29 Javascript
用react-redux实现react组件之间数据共享的方法
2018/06/08 Javascript
详解使用VueJS开发项目中的兼容问题
2018/08/02 Javascript
js replace替换字符串同时替换多个方法
2018/11/27 Javascript
新年快乐! javascript实现超级炫酷的3D烟花特效
2019/01/30 Javascript
了解在JavaScript中将值转换为字符串的5种方法
2019/06/06 Javascript
何时/使用 Vue3 render 函数的教程详解
2020/07/25 Javascript
基于JavaScript的数据结构队列动画实现示例解析
2020/08/06 Javascript
Python日志模块logging简介
2015/04/13 Python
Python实现大文件排序的方法
2015/07/10 Python
Python爬虫之xlml解析库(全面了解)
2017/08/08 Python
Python读取文件内容的三种常用方式及效率比较
2017/10/07 Python
python被修饰的函数消失问题解决(基于wraps函数)
2019/11/04 Python
python文字转语音的实例代码分析
2019/11/12 Python
tensorflow 大于某个值为1,小于为0的实例
2020/06/30 Python
python中的yield from语法快速学习
2020/11/06 Python
悬挂训练绳:TRX
2017/12/14 全球购物
Bibloo奥地利:购买女装、男装、童装、鞋和配件
2018/10/18 全球购物
物流仓储实习自我鉴定
2013/09/25 职场文书
经济学博士求职自荐信范文
2013/11/23 职场文书
团员的自我评价
2013/12/01 职场文书
社区敬老月活动实施方案
2014/02/17 职场文书
竞选演讲稿范文大全
2014/05/12 职场文书
酒店厨房管理制度
2015/08/06 职场文书
银行中层干部培训心得体会
2016/01/11 职场文书