博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
qt 获得cmd 命令运行的结果
阅读量:6845 次
发布时间:2019-06-26

本文共 1852 字,大约阅读时间需要 6 分钟。

// 参考

BOOL ExecDosCmd()

{
#define EXECDOSCMD "ping http://www.baidu.com" //可以换成你的命令

SECURITY_ATTRIBUTES sa;
HANDLE hRead,hWrite;

sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
if (!CreatePipe(&hRead,&hWrite,&sa,0))
{
return FALSE;
}
char command[1024]; //长达1K的命令行,够用了吧
strcpy(command,"Cmd.exe /C ");

strcat(command,EXECDOSCMD);

STARTUPINFO si;
PROCESS_INFORMATION pi;
si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);
si.hStdError = hWrite; //把创建进程的标准错误输出重定向到管道输入
si.hStdOutput = hWrite; //把创建进程的标准输出重定向到管道输入
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
//关键步骤,CreateProcess函数参数意义请查阅MSDN
QString str(command);

if (!CreateProcess(NULL, (LPWSTR)str.utf16(),NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))

{
CloseHandle(hWrite);
CloseHandle(hRead);
return FALSE;
}
CloseHandle(hWrite);

char buffer[4096] = {0}; //用4K的空间来存储输出的内容,只要不是显示文件内容,一般情况下是够用了。
DWORD bytesRead;
while (true)
{
if (ReadFile(hRead,buffer,4095,&bytesRead,NULL) == NULL)
break;
//buffer中就是执行的结果,可以保存到文本,也可以直接输出
QString strTemp(buffer);

QMessageBox testMassage1;

testMassage1.setText(strTemp);
testMassage1.exec();
//这里是弹出对话框显示
}
CloseHandle(hRead);
return TRUE;
}

 

另一个方法:

QProcess p(0);

p.start("cmd", QStringList()<<"/c"<<"ping 192.168.101.3");
p.waitForStarted();
p.waitForFinished();
QString strTemp=QString::fromLocal8Bit(p.readAllStandardOutput());
QMessageBox testMassage1;
testMassage1.setText(strTemp);
testMassage1.exec();
return true;

 

有趣的ping

ping -n 50

 Ping -n 50(IP地址或者域名,如)这个命令中的“-n”开关告诉发送ping命令的次数,“50”是发送的次数。

  
  然后,你将得到一个测试总结。这个总结将包括丢失的数量和百分比:
  
  199.181.132.250地址Ping的统计结果:
  
  包: 发送 = 6, 接收 = 6, 丢失 = 0 (0%)
  
  大约往返时间以毫秒(ms)显示:
  
  最小 = 26ms, 最大 = 29ms, 平均 = 27ms
  
  如果你看到平均往返时间较高(超过100ms),这也会降低你的网络下载速度。

转载于:https://www.cnblogs.com/gisbeginner/archive/2012/12/08/2809063.html

你可能感兴趣的文章
mysql数据库创建、删除数据库
查看>>
Python 的 pass 语句
查看>>
UVA 558 Wormholes 【SPFA 判负环】
查看>>
Win10 中修改cmd字体引发的问题
查看>>
Spring Boot的web开发
查看>>
php面向对象精要(3)
查看>>
多头数据分析
查看>>
linux 大冒险
查看>>
模型数据和容量
查看>>
Android app如何加密?
查看>>
Spring boot 远程调试
查看>>
BZOJ1856: [Scoi2010]字符串(组合数)
查看>>
【强化学习】python 实现 saras lambda 例一
查看>>
基于GPU屏幕空间的精确光学折射效果
查看>>
数据交换=>Windows_Mobile+WCF+Exchange2007 - part1
查看>>
下载ORACLE中BLOB内容到客户端
查看>>
matlab练习程序(图像放大/缩小,双立方插值)
查看>>
mysql命令
查看>>
第一章面向对象涉及原则
查看>>
SQL Server索引调优系列
查看>>