C++程序中调用exe可执行文件【转】
来源:互联网 发布:115年费会员淘宝 2017 编辑:程序博客网 时间:2024/05/17 07:02
当项目比较大的时候,通常会分开来开发,如果分开的部分只是一些函数或类,整合的时候 就可以使用静态库或动态库。但如果分开的是一个exe文件,整合的时候,就要通过调用exe文件来使用。尤其是当第三方软件是一个用c语言编写的exe文件时,更是需要如此。
最近在我所开发的LCDS系统当中就碰到了这样的问题。他需要调用一个分类器来处理数据,而手头上的分类器是经典的C4.5决策树分类器,它是用c语言写的,没有.h头文件,生成的是一个exe文件,通过在命令行执行main函数来处理数据。如果想把其改成静态库或动态库,因为没有头文件,改写后似乎不好调用其函数,因此考虑直接调用其生成的exe文件。可考虑的方法有:
1.使用system函数
2.使用execl或execv函数
3.使用WinExec函数
4.使用CreateProcess函数
5.使用ShellExecuteEx函数
system函数和execl、execv函数不能控制程序窗口是否显示,我要的效果是不显示该exe程序的窗口,所以这两种方法不予考虑。WinExec函数不好控制主程序来等该exe程序的结束,所以放弃。CreateProcess函数是新建一个进程,所以,你必须人为地控制该进程的生死,不如ShellExecuteEx方便,所以最终我选择的是ShellExecuteEx函数。程序如下:
SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = _T("open");
ShExecInfo.lpFile = _T("c4.5.exe");
ShExecInfo.lpParameters = _T("-f train");
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_HIDE;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
WaitCursorBegin();
WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
WaitCursorEnd();
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/tsd3698/archive/2007/10/15/1826226.aspx
- C++程序中调用exe可执行文件【转】
- 程序中调用exe可执行文件 Window编程
- C++程序中调用exe可执行文件
- C++程序中调用exe可执行文件
- C++程序中调用exe可执行文件
- C++程序中调用exe可执行文件
- C++程序中调用exe可执行文件
- C++程序中调用exe可执行文件
- C++中调用exe可执行文件
- C++程序怎样调用exe可执行文件
- C/C++ ShellExecuteEx调用exe可执行文件
- AIR中调用exe或者bat可执行文件
- JAVA调用exe可执行文件
- java调用exe可执行文件
- JAVA调用exe可执行文件
- JAVA调用exe可执行文件
- C++调用exe可执行文件
- 调用可执行文件(.exe)
- Oracle RMAN Catlaog 与NoCatalog
- js判断页面值不能为空
- win7 IIS HTTP重定向配置、参数设置
- PHP中常用的数组函数
- 三星I9000挖煤模式和R模式进入方法
- C++程序中调用exe可执行文件【转】
- javascript 判断浏览器 和 得到浏览器的宽度、高度
- static_cast用法
- linux shell script位置参数($0,$1,$2,$3,$4,$5,$6,$7,$8,$9,$#,$*,$?,$!,$$)
- 如何降低数字信号和模拟信号间的相互干扰
- Objective-C中的SEL
- 创建临时文件 tmpnam tmpfile tempnam mkstemp unlink
- RMAN 系列(一)---- RMAN 体系结构概述
- 如何在Linux下添加自己的驱动