C++程序启动外部程序的方法总结

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

使用WinExec命令

⑴函数原型:

UINT Win Exec(LPCSTR lpCmdLine, UINT uCmdShow);

⑵参数:

lpCmdLine:指向一个空结束的字符串,串中包含将要执行的应用程序的命令行(文件名加上可选参数)。

uCmdShow:定义Windows应用程序的窗口如何显示,并为CreateProcess函数提供STARTUPINFO参数的wShowWindow成员的值。

⑶返回值:

若函数调用成功,则返回值大于31。若函数调用失败,则返回值为下列之一:

①0:系统内存或资源已耗尽。

②ERROR_BAD_FORMAT:EXE文件无效(非Win32.EXE或.EXE影像错误)。

③ERROR_FILE_NOT_FOUND:指定的文件未找到。

④ERROR_PATH_NOT_FOUND:指定的路径未找到。

虽然Microsoft认为WinExec已过时,但是在许多时候,简单的WinExec函数仍是运行新程序的最好方式。简单地传送作为第一个参数的命令行,还需要决定如何显示程序(该程序也许会忽视它)的第二个参数。通常,将其设置为SW_SHOW,也可尝试SW_MINIMIZED 或SW_MAXIMIZED。WinExec不允许用CreateProcess获得的所有选项,而它的确简单。

使用ShellExecute命令

⑴函数原型:

HINSTANCE ShellExecute(HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpF ile, LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd);

⑵参数:

hwnd:指向父窗口的窗口句柄。此窗口接收应用程序产生的任何信息框。

lpOperation:一个空结束的字符串地址,此字符串指定要执行的操作。下面的操作字符串是有效的:

"open " 此函数打开由参数lpFile指定的文件,此文件可以是一个可执行文件或文档文件,也可是一个文件夹。

"print " 此函数打印由参数lpFile指定的文件,此文件应是一个文档文件,假如此文件是一个可执行文件,则打开此文件。

"explore " 此函数搜索由参数lpFile指定的文件夹,此文件应是一个文档文件,

此参数可以为空。这种情况下,函数用于打开由参数lpFile指定的文件。

lpFile:一个空结束的字符串地址,此字符串指定要打开或打印的文件或者是要打开或搜索的文件夹。

lpParameters:假如参数lpFile指定一个可执行文件,lpParameters则是一个空结束的字符串地址,此字符串指定要传递给应用程序的参数。假如lpFile指定一个文档文件,lpParameters应为空。

lpDirectory:一个空结束的字符串地址,此字符串指定默认目录。

nShowCmd:假如lpFile指定一个可执行文件,nShowCmd表明应用程序打开时如何显示。假如lpFile指定一个文档文件,nShowCmd应为空。

⑶返回值:

若函数调用成功,则返回值大于32,否则为一个小于等于32的错误值。

说明:可以用此函数打开或搜索一个外壳文件夹。打开文件夹可用下面任何一种形式:

ShellExecute(handle, NULL, path_to_folder, NULL, NULL, SW_SHOWNORMAL);

ShellExecute(handle, "open ", path_to_folder, NULL, NULL, SW_SHOWNORMAL);

搜索文件夹,可用如下形式

ShellExecute(handle, "explore ", path_to_folder, NULL, NULL, SW_SHOWNORMAL);

ShellExecute命令虽已过时但易于得到。该命令向命令解释程序提出打开、浏览或打印文档或文件夹的请求,虽然可以用ShellExecute运行程序,但通常只发送文档名,而命令解释程序则决定要运行那个程序。另外在打开目录文件夹时,ShellExecute命令非常有用。

⑷程序示例

下面通过一个例子来说名WinExec和ShellExecute的使用。下面程序有控制台程序示例,其使用两种不同的方法,打开文本文件。下面程序使用WinExec,并明确指定使用记事本程序。然后,使用ShellExecute,打开文本文件。

程序清单

#include

#include

void main(int argc,char *argv[])

{

cout < <”Opening with WinExec\n”;

if (WinExec(“notepad readme.txt”,SH_SHOW) <32)

MessagBox(NUL L,”Can’t WinExec”,NULL,MB_OK);

cout < <”Press Enter\n”;

MessagBox(NULL,”Press OK to continue”,”Progrm Launched”,MB_OK);

cout < <”Opening with ShellExecute\n”;

if (ShellExecute (NULL,”open”,”readme.txt”,NULL,NULL,SW_SHOW) <(HANDLE) 32)

MessagBox(NULL,”Can’t ShellExecute\n”,NULL,MB_OK);

}

使用CreateProcess命令

⑴函数原型:

BOOL CreateProcess(

LPCTSTR lpApplicationName,

LPTSTR lpCommandLine,

LPSECURITY_ATTRIBUTES lpProcessAttributes,

相关文档
最新文档