首页 > 代码库 > [转]python使用ctypes模块调用windowsapi获取系统版本
[转]python使用ctypes模块调用windowsapi获取系统版本
#coding: utf-8 import win32ui import win32gui import win32con import win32api #https://mail.python.org/pipermail/python-win32/2009-April/009078.html ‘‘‘ ico_x = win32api.GetSystemMetrics(win32con.SM_CXICON) ico_y = win32api.GetSystemMetrics(win32con.SM_CYICON) large, small = win32gui.ExtractIconEx("F:\\nginx\\nginx-1.13.0\\nginx.exe",0) win32gui.DestroyIcon(large[0]) hdc = win32ui.CreateDCFromHandle( win32gui.GetDC(0) ) hbmp = win32ui.CreateBitmap() hbmp.CreateCompatibleBitmap( hdc, ico_x, ico_x ) hdc = hdc.CreateCompatibleDC() hdc.SelectObject( hbmp ) hdc.DrawIcon( (0,0), small[0] ) hbmp.SaveBitmapFile( hdc, "save.bmp" ) print(large) print(small) ‘‘‘ "通过调用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)+" "+str(ctypes.string_at(os.szCSDVersion)) if __name__ == "__main__": print(GetSystemVersionString())
https://www.oschina.net/code/snippet_157181_13215
[转]python使用ctypes模块调用windowsapi获取系统版本
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。