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读取Excel的方法实例分析
Jul 11 Python
一些常用的Python爬虫技巧汇总
Sep 28 Python
Python脚本实现12306火车票查询系统
Sep 30 Python
Python多进程并发与多线程并发编程实例总结
Feb 08 Python
Python函数参数操作详解
Aug 03 Python
Django Rest framework之权限的实现示例
Dec 17 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
Jun 18 Python
详解PANDAS 数据合并与重塑(join/merge篇)
Jul 09 Python
python中resample函数实现重采样和降采样代码
Feb 25 Python
python中return不返回值的问题解析
Jul 22 Python
用python进行视频剪辑
Nov 02 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
Dec 18 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
php下获取http状态的实现代码
2014/05/09 PHP
使用PHPExcel实现数据批量导出为excel表格的方法(必看)
2017/06/09 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
2019/08/05 PHP
JavaScript 创建对象
2009/07/17 Javascript
window.dialogArguments 使用说明
2011/04/11 Javascript
推荐20家国外的脚本下载网站
2011/04/28 Javascript
当json键为数字时的取值方法解析
2013/11/15 Javascript
把字符串按照特定的字母顺序进行排序的js代码
2014/01/28 Javascript
js中文逗号转英文实现
2014/02/11 Javascript
node.js中的console.info方法使用说明
2014/12/09 Javascript
node.js中的fs.chmod方法使用说明
2014/12/18 Javascript
基于zepto.js实现仿手机QQ空间的大图查看组件ImageView.js详解
2015/03/05 Javascript
利用Query+bootstrap和js两种方式实现日期选择器
2017/01/10 Javascript
JavaScript函数柯里化原理与用法分析
2017/03/31 Javascript
webpack教程之webpack.config.js配置文件
2017/07/05 Javascript
详解Vue 事件修饰符capture 的使用
2017/12/29 Javascript
使用express搭建一个简单的查询服务器的方法
2018/02/09 Javascript
微信小程序日期选择器实例代码
2018/07/18 Javascript
angularjs自定义过滤器demo示例
2019/08/24 Javascript
在Vue中使用HOC模式的实现
2020/08/23 Javascript
你不知道的SpringBoot与Vue部署解决方案
2020/11/09 Javascript
python中的函数用法入门教程
2014/09/02 Python
python subprocess 杀掉全部派生的子进程方法
2017/01/16 Python
详解python while 函数及while和for的区别
2018/09/07 Python
python中的json总结
2018/10/11 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
2020/01/16 Python
python按照list中字典的某key去重的示例代码
2020/10/13 Python
利用CSS3的checked伪类实现OL的隐藏显示的方法
2010/12/18 HTML / CSS
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
香港唯港荟酒店预订:Hotel ICON
2018/03/27 全球购物
.NET里面如何取得当前的屏幕分辨率
2012/12/06 面试题
企业演讲稿范文大全
2014/05/20 职场文书
新农村建设汇报材料
2014/08/15 职场文书
2015年高考寄语或鼓励的话
2015/03/23 职场文书
Canvas三种动态画圆实现方法说明(小结)
2021/04/16 Javascript
Java基础之this关键字的使用
2021/06/30 Java/Android