C++程序启动外部程序的方法总结0001
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用Win Exec命令
⑴函数原型:
UINT Win Exec(LPCSTR IpCmdLi ne, UINT uCmdShow);
⑵参数:
lpCmdLine :指向一个空结束的字符串,串中包含将要执行的应用程序的命令行(文件名加上可选参数)。
uCmdShow定义Windows应用程序的窗口如何显示,并为CreateProcess 函数提供STARTUPINF参数的wShowWindow成员的值。
⑶返回值:
若函数调用成功,则返回值大于31。若函数调用失败,则返回值为下列之一:
①0:系统存或资源已耗尽。
②ERROR_BAD_FORMATXE文件无效(非Win32.EXE 或.EXE 影像错误)。
③ERROR_FILE_NOT_FOUN指定的文件未找到。
④ERROR_PATH_NOT_ FQU指定的路径未找到。
虽然Microsoft认为Win Exec已过时,但是在许多时候,简单的Win Exec函数仍是运行新程序的最好方式。简单地传送作为第一个参数的命令行,还需要决定如何显示程序(该程
序也许会忽视它)的第二个参数。通常,将其设置为SW_SHQW也可尝试SW_MINIMIZED或
SW_MAXIMIZE D WinExec不允许用CreateProcess 获得的所有选项,而它的确简单。
使用ShellExecute 命令
⑴函数原型:
HINSTANCE ShellExecute(HWND hwn d, LPCTSTR lpOperati on, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nSh owCmd);
⑵参数:
hwnd:指向父窗口的窗口句柄。此窗口接收应用程序产生的任何信息框。
IpOperation :—个空结束的字符串地址,此字符串指定要执行的操作。下面的操作字
符串是有效的:
"ope n ” 此函数打开由参数IpFile 指定的文件,此文件可以是一个可执行文件或文档文
件,也可是一个文件夹。
"pri nt "
此函数打印由参数IpFile 指定的文件,此文件应是一个文档文件,假如此文
件是一个可执行文件,则打开此文件。
"explore "
此函数搜索由参数IpFile 指定的文件夹,此文件应是一个文档文件,
此参数可以为空。这种情况下,函数用于打开由参数 lpFile 指定的文件。
lpFile : 一个空结束的字符串地址, 此字符串指定要打开或打印的文件或者是要打开或
搜索的文件夹。
lpParameters :假如参数lpFile 指定一个可执行文件,lpParameters 则是一个空结束 的字符串地
址,此字符串指定要传递给应用程序的参数。假如
lpFile 指定一个文档文件,
lpParameters 应为空。
lpDirectory :一个空结束的字符串地址,此字符串指定默认目录。
nShowCmd 假如lpFile 指定一个可执行文件,nShowCm 表明应用程序打开时如何显示。 假如lpFile
指定一个文档文件,nShowCm (应为空。
⑶返回值:
若函数调用成功,则返回值大于 32,否则为一个小于等于 32的错误值。
说明:可以用此函数打开或搜索一个外壳文件夹。打开文件夹可用下
面任何一种形式:
ShellExecute(ha ndle, RMAL);
NULL, path_to_folder, NULL, NULL, SW_SHOWNO
或
NULL, NULL, SW_SHOWNORMAL);
"open ShellExecute(ha ndle,
", path_to_folder.
搜索文件夹,可用如下形式
ShellExecute(ha ndle, "explore
", path_to_folder,
NULL, NULL, SW_SHOWNORMAL);
ShellExecute 命令虽已过时但易于得到。该命令向命令解释程序提出打开、浏览或打 印文档或文件
夹的请求,虽然可以用 ShellExecute 运行程序,但通常只发送文档名,而命
令解释程序则决定要运行那个程序。另外在打开目录文件夹时, ShellExecute 命令非常有
用。
⑷程序示例
下面通过一个例子来说名 Win Exec 和ShellExecute 的使用。下面程序有控制台程序示
例,其使用两种不同的方法,打开文本文件。下面程序使用 Win Exec ,并明确指定使用记事
本程序。然后,使用 ShellExecute,打开文本文件。
程序清单
#in clude
to continue ” , ” Progrm Launched" ,MB_OK);
n ;
(NULL,” open ” , ” readme.txt ” ,NULL,NULL,SW_SHOW)
使用 CreateProcess 命令
⑴函数原型:
BOOL CreateProcess(
void main (i nt argc,char { cout < < ” Opening with if (WinExec( "notepad MessagBox(NULL ” Can' t cout < < ” Press
*argv[])
n ;
readme.txt ” ,SH_SHOW) <32) Win Exec ” ,NULL,MB_OK); n ;
MessagBox(NULL, Press OK cout <
< ” Opening with if (ShellExecute
<(HANDLE) 32)
MessagBox(NULL ” Can' t
n ” ,NULL,MB_OK);