如何调用别的应用程序,取得该程序的输出字符串? 如何调用别的应用程序,取得该程序的输出字符串? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 进程间通信(IPC)问题.1.共享内存2.管道3.消息 比如调用dos的命令,要获得返回值。 给!// 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;} http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=185751http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=210563如果只是输出到文件的话,用dos的重定向ping www.163.com >c:\temp.txt 楼主说的情况可以分多种:1 dos命令的输出可以按楼上横秋朋友的方法把输出重定向到文件,然后自己去读文件中内容来得到字符串;2 如果那个“别的应用程序”不是dos命令,也不是源程序(即只有exe文件),那只好在你的程序中捕捉它的输出窗口中的内容;3 如果那个“别的应用程序”是你的另一个源程序的话,那就好办了,用snakebite2008(唢呐科比特)朋友说的方法随便选一个就行。暂时就想到这些。 谢谢大家,特别感谢Jarrylogin,横秋和雪上加冰 不依赖office的ocr怎么实现 派生于CWnd类不能响应消息 如何在vs2008中对c语言项目进行单元测试? 如何在另一线程中操作EXCEL 如何做出带有图标的菜单? 串口传送图像文件求! 请教高手 windbg的问题 各位高手请帮忙,怎样修改已定义好的快捷键呢? 请问那位大大知道怎么在vc中插入.jpg文件呀 ? _lock_file在什么情况下会出异常? .net大潮上VC还有希望吗?
1.共享内存
2.管道
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;
}
http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=210563如果只是输出到文件的话,用dos的重定向
ping www.163.com >c:\temp.txt
1 dos命令的输出可以按楼上横秋朋友的方法把输出重定向到文件,然后自己去读文件中内容来得到字符串;
2 如果那个“别的应用程序”不是dos命令,也不是源程序(即只有exe文件),那只好在你的程序中捕捉它的输出窗口中的内容;
3 如果那个“别的应用程序”是你的另一个源程序的话,那就好办了,用snakebite2008(唢呐科比特)朋友说的方法随便选一个就行。
暂时就想到这些。