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 相关文章推荐
Swift中的协议(protocol)学习教程
Jul 08 Python
python 3调用百度OCR API实现剪贴板文字识别
Sep 04 Python
python将处理好的图像保存到指定目录下的方法
Jan 10 Python
Python初学者常见错误详解
Jul 02 Python
python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例
Aug 27 Python
softmax及python实现过程解析
Sep 30 Python
python argparser的具体使用
Nov 10 Python
Python常用库大全及简要说明
Jan 17 Python
实现ECharts双Y轴左右刻度线一致的例子
May 16 Python
Python datetime模块使用方法小结
Jun 18 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
Nov 27 Python
python函数指定默认值的实例讲解
Mar 29 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去除字符串中空字符的常用方法小结
2015/03/17 PHP
PHP使用PHPexcel导入导出数据的方法
2015/11/14 PHP
Apache无法自动跳转却显示目录的解决方法
2020/11/30 PHP
Jquery AutoComplete自动完成 的使用方法实例
2010/03/19 Javascript
文本域中换行符的替换示例
2014/03/04 Javascript
JavaScript的Date()方法使用详解
2015/06/09 Javascript
使用Node.js配合Nginx实现高负载网络
2015/06/28 Javascript
JQUERY实现网页右下角固定位置展开关闭特效的方法
2015/07/27 Javascript
jQuery validate+artdialog+jquery form实现弹出表单思路详解
2016/04/18 Javascript
Javascript中的迭代、归并方法详解
2016/06/14 Javascript
浅谈JS中String()与 .toString()的区别
2016/10/20 Javascript
基于js 字符串indexof与search方法的区别(详解)
2017/12/04 Javascript
百度地图去掉marker覆盖物或者去掉maker的label文字方法
2018/01/26 Javascript
javascript+css实现进度条效果
2020/03/25 Javascript
JavaScript函数重载操作实例浅析
2020/05/02 Javascript
完美解决通过IP地址访问VUE项目的问题
2020/07/18 Javascript
微信小程序实现购物车功能
2020/11/18 Javascript
[01:01:01]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第一场 10.29
2020/10/29 DOTA
python计算方程式根的方法
2015/05/07 Python
和孩子一起学习python之变量命名规则
2018/05/27 Python
Python自然语言处理 NLTK 库用法入门教程【经典】
2018/06/26 Python
Python Dataframe 指定多列去重、求差集的方法
2018/07/10 Python
Django框架视图函数设计示例
2019/07/29 Python
Python读取JSON数据操作实例解析
2020/05/18 Python
Python xlwt模块使用代码实例
2020/06/10 Python
css3绘制天猫logo实现代码
2012/11/06 HTML / CSS
HTML5新增form控件和表单属性实例代码详解
2019/05/15 HTML / CSS
请解释接口的显式实现有什么意义
2012/05/26 面试题
vue实现倒计时功能
2021/03/24 Vue.js
求职信的最佳写作思路
2014/02/01 职场文书
优质护理服务演讲稿
2014/05/07 职场文书
创新社会管理心得体会
2014/09/12 职场文书
2016年“我们的节日·中秋节”活动总结
2016/04/05 职场文书
十大最强飞行系宝可梦,BUG燕上榜,第二是飞行系王者
2022/03/18 日漫
Win11筛选键导致键盘失灵怎么解决? Win11关闭筛选键的技巧
2022/04/08 数码科技
python图像处理 PIL Image操作实例
2022/04/09 Python