C程序启动外部程序的方法总结_第1页
C程序启动外部程序的方法总结_第2页
C程序启动外部程序的方法总结_第3页
C程序启动外部程序的方法总结_第4页
C程序启动外部程序的方法总结_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、UINTWin Exec(LPCSTR lpCmdLine,UINT uCmdShow);HINSTANCE ShellExecute(HWNDlpFile, LPCTSTR lpParameters, owCmd);hwnd, LPCTSTR lpOperation,LPCTSTR lpDirectory,LPCTSTRINT nSh使用 WinExec 命令函数原型:参数:lpCmdLine :指向一个空结束的字符串,串中包含将要执行的应用程序的命令行(文件 名加上可选参数)。uCmdShow定义 Win dows应用程序的窗口如何显示,并为Create Process 函数提供START

2、UPINF参数的 wShowWindoW成员的值。 返回值:若函数调用成功,则返回值大于 31。若函数调用失败,则返回值为下列之一:0:系统内存或资源已耗尽。ERROR_BAD_FORMAXE文件无效(非或.EXE影像错误)。ERROR_FILE_NOT_FOUN指定的文件未找到。ERROR PATH_NOT_ FQU指定的路径未找至U。虽然Microsoft认为Win Exec已过时,但是在许多时候, 简单的Win Exec函数仍是运行 新程序的最好方式。 简单地传送作为第一个参数的命令行, 还需要决定如何显示程序 (该程 序也许会忽视它)的第二个参数。通常,将其设置为SW_SHOW也可尝试

3、SW_MINIMIZED或SW_MAXIMIZEDWi nExec不允许用 Create Process 获得的所有选项,而它的确简单。使用 ShellExecute 命令 函数原型: 参数:此参数可以为空。这种情况下,函数用于打开由参数lpFile 指定的文件。ShellExecute(handle,RMAL);NULL, path_to_folder,NULL, NULL,SW_SHOWNOopenNULL, NULL, SW_SHOWNORMAL);hwnd:指向父窗口的窗口句柄。此窗口接收应用程序产生的任何信息框。lpOperation :一个空结束的字符串地址,此字符串指定要执行的操

4、作。下面的操作字 符串是有效的: open 此函数打开由参数 lpFile 指定的文件, 此文件可以是一个可执行文件或文档文 件,也可是一个文件夹。print 此函数打印由参数 lpFile 指定的文件,此文件应是一个文档文件,假如此文件是一个可执行文件,则打开此文件。explore 此函数搜索由参数 lpFile 指定的文件夹,此文件应是一个文档文件,lpFile :一个空结束的字符串地址, 此字符串指定要打开或打印的文件或者是要打开或 搜索的文件夹。lpParameters :假如参数 lpFile 指定一个可执行文件, lpParameters 则是一个空结束 的字符串地址,此字符串指定

5、要传递给应用程序的参数。假如lpFile 指定一个文档文件,lpParameters 应为空。lpDirectory :一个空结束的字符串地址,此字符串指定默认目录。n ShowCmd假如Ip File 指定一个可执行文件,n ShowCm表明应用程序打开时如何显示。 假如Ip File 指定一个文档文件,n ShowCm应为空。 返回值:若函数调用成功,则返回值大于32,否则为一个小于等于 32 的错误值。说明:可以用此函数打开或搜索一个外壳文件夹。打开文件夹可用下面任何一种形式:ShellExecute(handle, path_to_folder,搜索文件夹,可用如下形式ShellExe

6、cute(handle, , path_to_folder,exploreNULL, NULL, SW_SHOWNORMAL);ShellExecute 命令虽已过时但易于得到。该命令向命令解释程序提出打开、浏览或打 印文档或文件夹的请求,虽然可以用 ShellExecute 运行程序,但通常只发送文档名,而命 令解释程序则决定要运行那个程序。另外在打开目录文件夹时,ShellExecute 命令非常有用。 程序示例下面通过一个例子来说名 WinExec 和 ShellExecute 的使用。下面程序有控制台程序示 例,其使用两种不同的方法,打开文本文件。下面程序使用Win Exec,并明确指

7、定使用记事本程序。然后,使用 ShellExecute,打开文本文件。程序清单#include#includevoidmain(intargc,char*argv)cout ”Opening with(WinExec( “ notepadMessagBox(NULL”, Can cout ”PressifMessagBox(NULL”, Press cout ”Opening (ShellExecute MessagBox(NULL”, CanOKif使用CreateProcess 命令n”,SH_SHOW) 32)WinExec”,NULL,MB_OK); n”;towith(NULL,”o

8、pen tcontinue ”, ”ProgrmLaunched”,MB_OK);n”;”, ” ,NULL,NULL,SW_SHOW) (HANDLE) 32) n”,NULL,MB_OK); 函数原型:BOOL CreateProcess(LPCTSTR lpApplicationName,IpProcessAttributes 柄是否可被子进程继承。IpThreadAttributes是否可被子进程继承。bInheritHandIes,:表明新进程是否从调用进程继承句柄。LPTSTR IpCommandLine,LPSECURITY_ATTRIBUTES IpProcessAttribu

9、tes,LPSECURITY_ATTRIBUTES IpThreadAttributes,BOOL bInheritHandIes,DWORD dwCreationFIags,LPVOID IpEnvironment,LPCTSTR IpCurrentDirectory,LPSTARTUPINFO IpStartupInfo,LPPROCESS_INFORMATION IpProcessInformation ); 参数:lpApplicationName :指向一个以空结尾的串,他指定了要执行的模块Ip Comma ndLi ne:指向一个以空结尾的串,该串定义了要执行的命令行。:指向一个

10、SECURITY_ATTRIBUTE结构,该结构决定了返回的句:指向一个SECURITY_ATTRIBUTE结构,该结构决定了返回的句柄dwCreationFIags :定义控制优先类和进程创建的附加标志。IpEnvironment :指向一个新进程的环境块。IpCurrentDirectory :指向一个以空结尾的串, 该串定义了子进程的当前驱动器和当前 目录。lp Startu pinfo :指向一个 STARTU PINF黠构,该结构定义了新进程的主窗口将如何显 示。IpProcesslnformation:指向PROCESS_INFORMATI结构,该结构接受关于新进程的表示信息。 返

11、回值:若函数调用成功,则返回值不为 0;若函数调用失败,返回值为0。(确定设置大小到 cb,及设置dwFlagslpProcessInformation 返回进程和线程句柄,还包括进程和线程lpProcessAttributes 和 lpThreadAttributes 中规定的访问。ID。这CreateProcess 的一些参数对控制台应用程序是特定的, 而其它参数则对大多数情况下,并不一定要填入 STARTUPINF结构,但无论如何必须提也可以考虑 C函数:system() spawn() exec()函数系列函数系列启动exe (外部程序) 收藏ShellExecute 和 WinExe

12、c 命令用于简单的作业。如果要完全控制一个新进程,就必须 调用 CreateProcess 。在上述参数中,参数 IpStartupinfo是STARTUPINF结构。可以用来设置控台的标题,新窗口的的初始大小和位置, 及重定向标准输入和输出。 新程序通常可以忽略多数这些数据 项,如果选择那样做的话。可以规定该结构体中的标志,已表明要设置的数据段。有时,不 想设置任何信息, 也必须传递一个有效的指针给空结构 成员为 0)。参数 些句柄拥有在参数要注意, 针对 各种应用程序有用。 供它。其返回值是布尔型的,而真正感兴趣的返回值发生于作为参数传送的结构中 (PROCESS_INFORMATI)ON

13、。 CreateProcess 返回该结构中的进程 ID 及其句柄,以及初始线 程 ID 及其句柄。可以将 ID 发送到其它进程,或使用句柄来控制新进程。c+关于三个 SDK函 数:Win Exec ShellExecute , Create Process 的其他注意事项: 【1】定义头文件必须定义以下两个头文件:#include .File name WinExec(D:Program FilesTest,SW_SHOWMAXIMIZED);ShellExecute(NULL,open,C:,NULL,NULL,SW_SHOWNORMAL);1、调用 API: int system( co

14、nst char *command ); 你可以传入一命令,启动某个程序。如 ping , YourExe 等等 不过这里有几点要值得注意:(1)、他不会立即返回,直到你启动的程序执行完成。(2)、如果你启动是windows程序,它仍然会启动一个控制台,这就给人感 觉太差劲了, 但如果本身是控制台的, 而且又需要等待它的完成, 那这将是比较 好的选择。(3)、它的返回值代表是否执行成功以及程序的退出码。(4)、不能运行 *.txt 文件或 2、调用 API:UINT WinExec(LPCSTR lpCmdLine, xt 文件或3、调用:HINSTANCE ShellExecute(HWND

15、 hwnd,LPCTSTR lpVerb,LPCTSTR lpFile,LPCTSTR lpParameters,LPCTSTR lpDirectory,INT nShowCmd);它也有 Win Exec同样的缺点。它虽然传回一个HINSTANC,E但他并不是真正的句柄,我们仅能拿它来做一 些错误值检查。但它的功能比前两者更强大,它执行系统的 Shell 命令。1、 2中如果传入“”,它们将不能成功执行, ShellExecute 却能很好地执 行,它将启动一个默认的文字处理程序来打开它。1、 2中如果传入“,将不能成功执行,而 ShellExecute 却能很好地执行, 它将启动一个默认浏

16、览器来打开这个网站。参数讲解:参数1 hwnd 窗体句柄,将作为启动的程序的父窗体。参数 2 lpVerb :你想执行的操作( edit 、explore 、find 、open、print 、 properties ),你也可以传入 NULL值,它将执行默认操作(win2000以前与以 后处理略有差别,请见 MSD)N 。参数 3 lpFile :一文件名或操作的对象。参数 4 lpParameters :如果 lpFile 是一可执行文件,这个将作为它的参 数。它的格式由执行的操作决定。 而且当IpFile为一 document文件时,此参数 需为 NULL。参数 5 lpDirector

17、y :指定它的工作目录。参数6 nShowCmd窗体显示的控制。以下是几个例子:xt and *.*n );printf(Please press Enter go onn); getchar();:nitcan run a cmdcomma ndo openSW HIDESW MINIMIZEd p ositi on.SW SHOWMAXIMIZEIActivatesw.SW SHOWMINIMIZEDActivatesSW SHOWMINNOACTIVEis playswi ndowanddis playsit as a maximizedwin dowi ndowanddis plays

18、it as an icon.wi ndowasan icon.The window thatis currWin Exec(,SW_SHOWNOACTIVATE);prin tf(F un cti onfile or webnn);getchar();prin tf(O pen a txt filen);ShellExecute(NULL,o pen ,C:,NULL,NULL,SW_MINIMIZE); getchar();prin tf( Open a webn);ShellExecute(NULL,NULL, ,NULL,NULL,SW_SHOVyNAgetchar();prin tf(

19、R un a cmd comma nd:ping );ShellExecute(NULL, NULL, pin g, , NULL, SW_SHOWNORMAL); getchar();printf(打开目录 n);ShellExecute(NULL, o pen, c:, NULL, NULL, SW_SHOWNORMAL); getchar();printf(浏览目录 n);ShellExecute(NULL, ex plore, c:, NULL, NULL, SW_SHOWNORMAL); getchar();printf(文件属性 n);ShellExecute(ha ndle, prop erties,C:,NULL,NULL,SW_MINIMIZE);prin tf(%s,ha ndle);/*shellExecute的第二个参数为你想执行的操作(edit,ex plore,fi nd,o pen,prin t, properties),也可为 NULL*/*Hides the wi ndow and p assesactivati ontoano therwi ndow.Mini mizesthesp ecifiedwin dow and activates thetop-levelwi n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论