ShellExecute(NULL,"open", "C:\\WINDOWS\\system32\\cmd.exe", "ping 192.168.0.5 > C:\\tmp.txt", NULL, SW_HIDE);
使用ShellExecute,目的是打开cmd后,ping指定ip并将结果输出到文件内,可是总也得不到结果,请哪位大侠帮忙解决一下,谢谢啦!

解决方案 »

  1.   

    ShellExecute(NULL,"open", "c:\\windows\\system32\\ping.exe" , "192.168.0.5", NULL, SW_SHOW); 
    这样能看到执行,要重定向输出好像报参数错误,不用调用cmd,直接调用ping即可
      

  2.   

    通过这种方法应该不能重定向输出结果,可以使用CreateProcess创建ping进程,创建的时候重定向标准输出。
      

  3.   

    你直接在地址栏里输入192.168.0.5 > C:\\tmp.txt
    看你能不能看到这个文件!
    你打开网址应该可以吧
      

  4.   

    感谢楼上几位的答复,开始忘说了在命令行下是可以定向到文件内的。就是使用shellexcute不行了,所以想问一下大侠是不是shellexcute不能这样定向到文件?
    谢谢啦!
      

  5.   

    ShellExecute(NULL,"open", "cmd.exe /c ping 192.168.0.5 > C:\\tmp.txt", "", NULL, SW_HIDE); 
    试试
      

  6.   

    ShellExecute(NULL,"open", "cmd.exe", " /k ping 192.168.0.5 > C:\\tmp.txt", NULL, SW_HIDE);
    测试过,可以。
      

  7.   

    刚才试了一下 用批处理的方法,可行
    先在c盘建立一个批处理文件pinga.bat批处理文件内容:
    ping 192.168.0.5 > c:\tmp.txt调用代码
    ShellExecute(NULL,"open", "c:\\pinga.bat", "", NULL, SW_HIDE); 
      

  8.   

    感谢fish_gao,这种方法是可行的,开始我也这么用后来想更直接点所以使用了ShellExecute。arpnet99 ,您的答复我试了可以使用,想再请教两个问题:1 /k的作用
    2 如果我需要ping的ip是个变量,需要对很多设备ping该如何处理那?
    谢谢啦!
      

  9.   

    1.  /k 是命令行开关。
    2.  ip为变量的时候,可以用格式化为字符型,进行处理...
      

  10.   

    2.  ip为变量的时候,可以用格式化为字符型,进行处理... 
     
    我的意思是ShellExecute内怎么使用ip为变量那?
      

  11.   

    自己写函数吧,ShellExecute好像不可以直接传入IP为参数吧~
      

  12.   


    CString str, strIP;
    strIP = _T("192.168.0.5");
    str.Format(_T("ping %s > C:\\tmp.txt"),strIP);//再把str带入ShellExecute参数里就可以啦~
      

  13.   

    cmd.exe的重定向行,用管道文件也可以呀