(Qt)システム詳細バージョン番号OS Buildの取得

10175 ワード

パイプコマンドラインを直接呼び出しますが、黒いボックス(コンソール)が点滅します.
#include 
#include 

#include 
using namespace std ;
//   :execmd      ,       result      
//   :cmd        
// result              
//         1,    0
int execmd(char* cmd,char* result) {
    char buffer[128];                         //     
    FILE* pipe = _popen(cmd, "rt");            //    ,     
    if (!pipe)
        return 0;                      //  0      

    while(!feof(pipe)) {
        if(fgets(buffer, 128, pipe)){             //      result 
            strcat(result,buffer);
        }
    }
    _pclose(pipe);                            //    
    return 1;                                 //  1      
}

void getVer(){
    char result[1024*4]="";                   //            
    char cmdline[100] = "ver";
    if(1==execmd(cmdline,result)){
        //printf(result);
        qDebug() << QString(result);
    }
    //system("pause");                          //       
}


Qprocess呼び出し
#include 
#include 
#include 
QString getWindowsBuildVersion()
{
    QProcess p(0);
    p.start("systeminfo");
    p.waitForStarted();
    p.waitForFinished();
    QString sysinfo =  QString::fromLocal8Bit(p.readAllStandardOutput());
    std::string temp = sysinfo.toStdString();

    temp = temp.substr(temp.find("OS Version:"),temp.find("OS Manufacturer:")-temp.find("OS Version:"));
    temp = temp.substr(temp.find("10.0."),10);
    return QString::fromStdString(temp);

}

この方法は自分で先にシステムをwin 10と判断する必要があり、判断方法は前文を見る.