[轉]python使用ctypes模組調用windowsapi擷取系統版本

來源:互聯網
上載者:User

標籤:perm   eof   gets   extra   min   windows 9   turn   return   coding   

#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

[轉]python使用ctypes模組調用windowsapi擷取系統版本

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.