VC中如何调用其他的可执行程序
来源:互联网 发布:锦江之星酒店知乎 编辑:程序博客网 时间:2024/05/19 22:01
VC中调用其他可执行程序,就我目前所知有三种方法:
HINSTANCE ShellExecute( HWND hwnd, LPCTSTR lpVerb, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd);
特殊需要讲的参数:
lpVerb:对lpFile要执行的行为,包括"open","explore","print","edit","find","properties"
lpFile:要操作的对象
lpParameters:传递给为lpFile的参数
nShowCmd:窗口的显示参数,不显示(SW_HIDE)
注意:返回值如果小于32,则是错误,见具体错误
其扩展函数ShellExecuteEx功能更全
此函数声明包含在头文件shellapi.h,库是shell32.lib- UINT WinExec(
LPCSTR lpCmdLine, // command line
UINT uCmdShow // window style
);
参数lpCmdLine为文件名+参数
如果执行正确,返回值大于31
声明在头文件windows.h,包含在kernel32.lib中 - BOOL CreateProcess(
LPCTSTR lpApplicationName, // name of executable module
LPTSTR lpCommandLine, // command line string
LPSECURITY_ATTRIBUTES lpProcessAttributes, // SD
LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD
BOOL bInheritHandles, // handle inheritance option
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // new environment block
LPCTSTR lpCurrentDirectory, // current directory name
LPSTARTUPINFO lpStartupInfo, // startup information
LPPROCESS_INFORMATION lpProcessInformation // process information
);
这个够复杂,启动一个进程的方式打开一个程序。声明所在的头文件和库同WinExec
以上三种方法,推荐使用第一种。第二种不推荐使用,因为它存在只是为了支持16位机的。
还需要考虑另外一个问题,就是后面程序的执行,可能需要等待这个进程结束之后才能执行,而不能两个进程并发执行。(两个进程一个是原进程,一个是启动的进程)。参考了:http://www.cnblogs.com/del/archive/2008/02/13/1067871.html
可以如下使用:
HANDLE hProg;
hProg=ShellExecute(NULL, "open", "xxx.exe", NULL, NULL, SW_HIDE);
WaitForSingleObject(hProg, INIFINTE);
在我使用的时候是要用一个MFC程序打开一个控制台程序,控制台程序执行结果写入到一个文档中,然后再用mfc程序读出。(为什么这么麻烦,是因为控制台程序用到的库是第三方库,不支持MFC,没办法)。
在控制台程序结束时,写的文件未必已经写完,并关闭了。所以还需要额外做些工作。
While(!FileExists(Result.TXT));
READFile(Result.TXT);
注意while语句后面的";"
总结到此吧。
参考文档:MSDN 2000
- VC中如何调用其他的可执行程序
- VC中如何调用其他的可执行程序
- VC中如何调用其他的可执行程序
- VC中如何调用其他的可执行程序
- VC中程序调用可执行程序
- VC中调用其他程序的函数
- VC 调用可执行程序
- 在程序中如何调用可执行程序。
- 在程序中如何调用可执行程序。
- 如何在VC++程序中获得其他程序的图标?
- VC中调用其他程序的方法(函数)
- VC中调用其他程序的方法(函数)
- VC 调用外部可执行程序
- VC++调用其他程序
- IE浏览器中如何安全地调用本地可执行程序
- vc中调用其他应用程序的方法
- vc 调用其他exe程序
- 在VC中更改可执行程序的图标
- [PKU 3378]Crazy Thairs(平衡树)
- 获得html 属性值的集中方法
- 2009年经典语录 无聊笑一笑
- VB 实现中文文本的加密方法
- so-called "research"
- VC中如何调用其他的可执行程序
- 李开复-创新工场-发言稿
- 对于集合内装载的对象数据进行自定义排序 !
- WPF中自定义只能输入数字的TextBox
- 当有tyr,catch时,如果无论如何都想返回值的话,return语句应放的位置
- Java多线程初学者指南(7):向线程传递数据的三种方法
- 刘宇环-美国中经合集团-发言稿
- action中获取request进行参数设置
- 风险投资新模式