#coding: utf-8import win32uiimport win32guiimport win32conimport 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