zoukankan      html  css  js  c++  java
  • qt 获得cmd 命令运行的结果 GIS

    http://blog.csdn.net/flxqe/article/details/7801084// 参考

    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 www.BAIDU.COM

     Ping -n 50(IP地址或者域名,如www.website.com)这个命令中的“-n”开关告诉发送ping命令的次数,“50”是发送的次数。
      
      然后,你将得到一个测试总结。这个总结将包括丢失的数量和百分比:
      
      199.181.132.250地址Ping的统计结果:
      
      包: 发送 = 6, 接收 = 6, 丢失 = 0 (0%)
      
      大约往返时间以毫秒(ms)显示:
      
      最小 = 26ms, 最大 = 29ms, 平均 = 27ms
      
      如果你看到平均往返时间较高(超过100ms),这也会降低你的网络下载速度。

  • 相关阅读:
    在日本被禁止的コンプガチャ設計
    Starling常见问题解决办法
    Flixel引擎学习笔记
    SQLSERVER中修复状态为Suspect的数据库
    T4 (Text Template Transformation Toolkit)实现简单实体代码生成
    创建Linking Server in SQL SERVER 2008
    Linq to Sql 与Linq to Entities 生成的SQL Script与分页实现
    Linq to Entity 的T4 模板生成代码
    在VisualStudio2008 SP1中调试.net framework 源代码
    使用HttpModules实现Asp.net离线应用程序
  • 原文地址:https://www.cnblogs.com/gisbeginner/p/2809063.html
Copyright © 2011-2022 走看看