1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| QString MainWindow::srchIp()
{
QProcess processIp;
processIp.start("cmd.exe");
if(!processIp.waitForStarted(5000)){ //Si le processus ne s'est pas lancé, on stop le programme
qDebug()<<"ERREUR: Le processus ne s'est pas lancé correctement... Stop.";
return NULL;
}
//On fait une première lecture nulle pour éviter de retrouver le prompt windows au lancement de cmd.exe
processIp.write("\n");
processIp.readAllStandardOutput();
//On utilise une commande pour afficher toutes les interfaces et leur état (connecté ou déconnecté). Ne sélectionne que les cartes Ethernet.
processIp.write("netsh interface ip show interfaces | findstr /IR \"connected\" | findstr /rv \"disconnected VMware VirtualBox Loopback\"\n");
processIp.closeWriteChannel();
if(!processIp.waitForFinished(3000)){
return NULL;
}
QString adapterState = processIp.readAllStandardOutput();
qDebug()<<"\nRésultat de la première commande adapterState: \n"<<adapterState;
//On sépare d'abord le prompt windows du résultat de la commande
QStringList splitAdapterState = adapterState.split(">");
adapterState = splitAdapterState[1];
qDebug()<<"\nNouvelle valeur de adapterState: \n"<<adapterState;
//On split une nouvelle fois pour ne garder que l'interface
splitAdapterState = adapterState.split("\n");
adapterState = splitAdapterState.last();
qDebug()<<"\nValeur finale de adapterState: "<<adapterState;
//Une fois qu'on a l'interface connecté, on utilise une commande afin de récupéré l'IP de l'interface en question.
QString cmdAdapterIp = "netsh interface ip show ip \""+adapterState+"\" | findstr /ir \"[0-9][0-9]*\\.[0-9][0-9]*\\.[0-9][0-9]*\\.[0-9][0-9]*\"\n";
QByteArray convCmdIp = cmdAdapterIp.toUtf8();
processIp.write(convCmdIp);
processIp.closeWriteChannel();
if(!processIp.waitForFinished()){
return NULL;
}
QString adapterIp = processIp.readAll();
qDebug()<<"\nRésultat de la seconde commande adapterIp: \n"<<adapterIp;
//On sépare d'abord le prompt windows du résultat de la commande
QStringList splitAdapterIp = adapterIp.split(">");
adapterIp = splitAdapterIp[1];
qDebug()<<"\nNouvelle valeur de adapterIp: "<<adapterIp;
splitAdapterIp = adapterIp.split(" ");
adapterIp = splitAdapterIp.last();
qDebug()<<"\nDernière valeur de adapterIp: "<<adapterIp;
return adapterIp;
} |
Partager