编程中如何调用其他已有程序,并获取他计算出的结果?

编程中怎么调用其他已有程序,并获取他计算出的结果??
VC编程中如何才能调用别的现存程序(如果是exe的),调用后又如何获得该程序界面上返回的结果值?求大神指教

------解决方案--------------------

void CCntrlOtherPrcssDlg::OnStart() 
{
PROCESS_INFORMATION pi;
STARTUPINFO si;
//初始化变量
memset(&si,0,sizeof(si));
si.cb=sizeof(si);
si.wShowWindow=SW_SHOW;
si.dwFlags=STARTF_USESHOWWINDOW;

//打开记事本程序
BOOL fRet=CreateProcess(NULL,
"c:\\windows\\notepad.exe c:\\autoexec.bat",
NULL,
NULL,
FALSE,
NORMAL_PRIORITY_CLASS|CREATE_NEW_CONSOLE,
NULL,
NULL,
&si,
&pi);

if(!fRet)
{//创建失败,显示错误信息
LPVOID lpMsgBuf;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | 
FORMAT_MESSAGE_FROM_SYSTEM | 
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL );
AfxMessageBox( (LPCTSTR)lpMsgBuf);
LocalFree( lpMsgBuf );

}
else
{
AfxMessageBox("CreateProcess成功");
m_hPro=pi.hProcess;
}
}
------解决方案--------------------
探讨
就是程序需要提供接口,我才能获得执行后的结果吗?

------解决方案--------------------
调用exe的方法很多。
如楼上说得可以使用CreateProcess
或者
CString szPath = GetCurDir() +_T("别人的.exe");
ShellExecute(NULL, _T("open"), szPath,NULL, NULL, SW_SHOWMAXIMIZED );
或者:
WinExec("C:\\Program Files\\Windows NT\\Accessories\\wordpad.exe",SW_SHOW);

至于说调用后又如何获得该程序界面上返回的结果值。那也简单。
可以首先通过遍历找到别人程序对话框的句柄。然后就可以操作对话框上的控件了,包括可以获得控件上的值,状态等等之类的信息了。

HWND oldHWnd = NULL;
EnumWindows(EnumWndProc,(LPARAM)&oldHWnd); //枚举所有运行的窗口
if(oldHWnd != NULL)
{

//AfxMessageBox("本程序已经在运行了");
::ShowWindow(oldHWnd,SW_SHOWNORMAL); //激活找到的前一个程序
::SetForegroundWindow(oldHWnd); //把它设为前景窗口
return false; //退出本次运行
}

BOOL CALLBACK EnumWndProc(HWND hwnd,LPARAM lParam)
{
HANDLE h = GetProp(hwnd,g_szPropName);
if( h == g_hValue)
{
*(HWND*)lParam = hwnd;
return false;
}
CString str;
TCHAR text[10];
GetWindowTextW(hwnd,(LPWSTR)text,10);
str.Format(_T("%s"),text);
if (str.Compare(SOFTWEARNAME)==0)
{
*(HWND*)lParam = hwnd;
return false;
}
return true;
}