如何调用一个程序,等待运行结束,并知晓程序运行成功与否:ShellExecuteEx;WaitForSingleObject;GetExitCodeProcess(C代码)
来源:互联网 发布:搜狐网络加速器 编辑:程序博客网 时间:2024/06/05 00:09
如何在代码里启动调用一个程序,等到它运行结束,还要晓得它的结果再去搞其他的事情?
// 先看看怎么调用一个程序吧?
// ShellExecuteEx可以实现,还会返回一个句柄。句柄一定要有,后面都要通过这个句柄判定结束与否和运行结果
// 据说Process也可以实现,但是的第二个参数const *啊硬伤一直没调试通过,但是很多大神说可以。
// ShellExecuteEx使用大致如下:主要设置一个lpFile(就是名字路径等等),一个lpParameters(命令行参数,可以多个参数一起来),
// 一个lpVerb(就是调用方式一般是 open),一个nShow(就是调用以后显示与否的设定)。这里粗线条划过,自己多测试,看函数原型MSDN等。
// 建议:直接复制过去改着四个参数就好了 :)lz都比较懒
SHELLEXECUTEINFO ShExecInfo = {0}; // ShellExecuteEx调用例程及定义ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;ShExecInfo.hwnd = NULL;ShExecInfo.lpVerb = _T("open"); // 重要参数,见上述介绍ShExecInfo.lpFile = _T("test_04.10.exe");// 重要参数,见上述介绍ShExecInfo.lpParameters = _T("-r 小明.txt");// 重要参数,见上述介绍ShExecInfo.lpDirectory = NULL;ShExecInfo.nShow = SW_SHOW;// 重要参数,见上述介绍ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo); // 可生成句柄,供WaitForSingleObject调用
// 怎么判定程序结束与否,怎么等到程序跑完了再干其他事情呢?
// WaitForSingleObject需要一个你所调用程序的句柄,不然它通过锤子来晓得你调用的程序跑完没啊:)
// 细节自己去谷歌bing百度MSDN
WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
// 怎么把调用结果搞出来了?调用了不错,成功与否谁知道呢,不能老打印命令提示符吧
// 打印被调用函数的返回值,非零则未成功执行
// 同样需要搞一个句柄来指一下你调用的程序啦,GetExitCodeProcess满足你的需求
GetExitCodeProcess(ShExecInfo.hProcess, &dwExitCode); printf("Exit code(Read) : %d\n", dwExitCode);
请注意:不要忘记了头文件,下面几个头估计都要用到
#include <windows.h>#include <ShellAPI.h> // ShellExecuteEx#include <tchar.h>
来源http://my.oschina.net/laopiao/blog/91936等等等等等
1 0
- 如何调用一个程序,等待运行结束,并知晓程序运行成功与否:ShellExecuteEx;WaitForSingleObject;GetExitCodeProcess(C代码)
- 如何调用一个程序,等待运行结束,并知晓程序运行成功与否:ShellExecuteEx;WaitForSingleObject;GetExitCodeProcess(C代码)
- MFC调用exe程序,并等待exe程序运行结束(ShellExecuteEx)
- MFC调用exe程序,并等待exe程序运行结束(ShellExecuteEx)
- 运行程序并等待结束
- 如何让Delphi调用外部程序并等待其运行信息(如结束)
- 如何让Delphi调用外部程序并等待其运行信息(如结束)
- Delphi 调用外部程序并等待其运行结束
- Delphi 调用外部程序并等待其运行结束
- Delphi 调用外部程序并等待其运行结束
- Delphi调用外部程序并等待其运行结束
- Delphi 调用外部程序并等待其运行结束
- [delphi]调用外部程序并等待其运行结束
- VC启动一个程序并等待运行结束
- windows运行一个程序并等待其结束。
- 如何让Delphi调用外部程序并等待其运行结束
- 等待程序运行结束
- VBShell调用后等待程序运行结束
- 整合项目时发生的错误
- android4.0隐藏状态栏和标题栏的方法
- mac下的svn工具——Versions使用详解
- 裴大鹏:如何助力传统品牌企业扩大销量
- 一步一步写算法(之链表排序)
- 如何调用一个程序,等待运行结束,并知晓程序运行成功与否:ShellExecuteEx;WaitForSingleObject;GetExitCodeProcess(C代码)
- 北邮新OJ97
- 一步一步写算法(之字符串查找 上篇)
- log4j.jar包没有导入错误
- 数字证书使用Javascript在浏览器中自动安装的解决方案
- 一步一步写算法(之字符串查找 中篇)
- Ubuntu11密码忘记解决
- 阿里数据分析师面试准备二:对阿里数据分析师岗位的理解
- 北邮新OJ98