qsysinfo類可以為我們提供一些有關當前系統的底層資訊。其中包括:
注意,該類中所提供的常量定義,有一些只在特定平台上有效。所以,我們在使用時,可以先使用qt預定義的符號q_os_win和q_os_osx來判斷一下,當前應用程式是在哪個系統下編譯的。
至於該類的使用方法,和我們之前講過的qstorageinfo類似,其成員函式均為靜態方法,我們可以很方便的使用。
qstring qsysinfo::buildabi()
返回編譯qt程式的平台的架構全資訊。其又三個或以上的部分組成,有「-」分隔。具體資訊如下:
cpu architecture
例如,"arm","i386","mips","x86_64"
endianness
"little_endian" 或 "big_endian"
word size
"llp64"(windows 64-bit),"lp64"(unix 64-bit),"ilp32"(32-bit)
(optional)abi
零個或多個該平台上不同的abi
qstring qsysinfo::buildcpuarchitecture()
返回編譯qt程式的cpu架構。注意,這可能和qt程式實際執行的cpu不同,因為可能存在**層或該cpu支援多個架構。
通常的返回值如下:
qstring qsysinfo::currentcpuarchitecture()
返回qt程式當前所執行在的cpu架構。和上面的那個函式相對應。
qstring qsysinfo::kerneltype()
qstring qsysinfo::kernelversion()
返回編譯qt程式的作業系統的核心的型別和版本號。在windows平台上,該函式返回"wince" 或者 "winnt" 及其版本;在unix平台上,該函式的返回值和命令 "uname -rs"的返回值一樣。
qstring qsysinfo::prettyproductname()
qstring qsysinfo::producttype()
qstring qsysinfo::productversion()
返回當前執行qt程式的作業系統的產品名稱和產品的版本。
下面我們就以當前的windows系統為例,來說明一下這些函式的使用及其含義:
輸出結果如下圖:
我們還分析一下各個輸出結果的含義,有助於我們理解上面講到的函式的意思:
windowsversion: 192,十進位制的192,轉換為16進製制就是0xc0,再參照qsysinfo類中winversion列舉型別的常量定義可知,其對應的作業系統恰好就是windows 10.
buildabi:我當前使用的qt是qt5.7 mingw版本,再結合windows x86結構總是小端,故輸出結果為"i386-little_endian-ilp32"
buildcpuarchitecture:分析如上
currentcpuarchitecture:我當前系統是windows 64位 專業版,故輸出 "x86_64"
kerneltype:眾所周知,桌面端winnt,移動端和嵌入式wince
kernelversion:剛才說了,windows 10
machinehostname:就是計算機名稱而已
prettyproductname、producttype、produceversion:產品的版本型別,windows 10
我上面對每個函式解釋的不同,請大家對照著輸出結果再理解一下每乙個函式的意思,也可以在自己電腦上執行該程式,檢視相應的輸出結果。
前端獲取作業系統 作業系統版本
在做埋點的過程中,遇到要上傳作業系統和作業系統版本的需求,如下 通過n igator.useragent獲取首先將作業系統確定為如下對映 all os 獲取當前作業系統 獲取當前作業系統 export const getos if useragent.includes mac else if use...
獲取作業系統型別
新增自定義型別,用作判斷系統型別,type tosversion osunknown,os95,os98,osme,osnt3,osnt4,os2k,osxp,os2k3 新增自定義函式過程 function getos tosversion 獲得系統型別,用來取得托盤控制代碼 varos tosv...
獲取作業系統資訊
osversioninfo osvi zeromemory osvi,sizeof osversioninfo osvi.dwosversioninfosize sizeof osversioninfo getversionex osvi 通過osvi這個結構體資訊來獲取作業系統資訊 typedef...