如何调用别的应用程序,取得该程序的输出字符串?

解决方案 »

  1.   

    进程间通信(IPC)问题.
    1.共享内存
    2.管道
    3.消息
      

  2.   

    比如调用dos的命令,要获得返回值。
      

  3.   

    给!
    // start.cpp : Defines the entry point for the console application.
    //#include "stdafx.h"#include <iostream>
    #include <windows.h>
    using namespace std;bool Ccmd(char * pDir,char * fileOut)
    {
      
        SECURITY_ATTRIBUTES sa; 
        sa.nLength = sizeof(SECURITY_ATTRIBUTES); 
        sa.lpSecurityDescriptor = NULL; 
        sa.bInheritHandle = TRUE; 
        HANDLE hStdOutput=CreateFile(fileOut,GENERIC_WRITE,0,&sa,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);//打开输出文件
      
        STARTUPINFO si; 
        PROCESS_INFORMATION pi; 
        si.cb = sizeof(STARTUPINFO); 
        GetStartupInfo(&si); 
        si.hStdOutput=(HANDLE)hStdOutput;
        si.hStdError=(HANDLE)hStdOutput;
         si.wShowWindow = SW_HIDE; 
        si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES; 
      
    //  DWORD dw = CREATE_NO_WINDOW;
        CreateProcess(NULL,pDir,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi);
        CloseHandle(hStdOutput);
     
        return true;
    }int main(int argc, char* argv[])
    {
    char * fileOut ="d:\\1000\\out.txt";
      
        char * pir="cl d:\\1000\\add.cpp"; Ccmd(pir,fileOut); return 0;
    }
      

  4.   

    http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=185751
    http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=210563如果只是输出到文件的话,用dos的重定向
    ping  www.163.com  >c:\temp.txt
      

  5.   

    楼主说的情况可以分多种:
    1 dos命令的输出可以按楼上横秋朋友的方法把输出重定向到文件,然后自己去读文件中内容来得到字符串;
    2 如果那个“别的应用程序”不是dos命令,也不是源程序(即只有exe文件),那只好在你的程序中捕捉它的输出窗口中的内容;
    3 如果那个“别的应用程序”是你的另一个源程序的话,那就好办了,用snakebite2008(唢呐科比特)朋友说的方法随便选一个就行。
    暂时就想到这些。
      

  6.   

    谢谢大家,特别感谢Jarrylogin,横秋和雪上加冰