资源描述:
《vc++ 中调用其他应用程序的方法(函数)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、三个SDK函数: WinExec,ShellExecute,CreateProcess可以实现调用其他程序的要求,其中以WinExec最为简单,ShellExecute比WinExec灵活一些,CreateProcess最为复杂。WinExec两个参数,前一个指定路径,后一个指定显示方式。 ShellExecute可以指定工作目录,并且还可以寻找文件的关联直接打开不用加载与文件关联的应用程序,ShellExecute还可以打开网页,启动相应的邮件关联发送邮件等等。 CreateProcess一共有十个参数,不过大部分都可以
2、用NULL代替,它可以指定进程的安全属性,继承信息,类的优先级等等。如果我们要得到足够多的关于新的进程的信息,控制新的进程的细节属性,若要达到这些目的,我们就需要使用CreateProcess函数了。三个SDK函数(WinExec、ShellExec、CrateProcess)的语法:WinExec这个函数最简单,只有两个参数,原型如下:UINTWinExec(LPCSTRlpCmdLine,//命令路径UINTuCmdShow//显示方式)使用方法如下:WinExec("Notepad.exe",SW_SHOW);//打开记
3、事本WinExec("D:\ProgramFiles\Test\Test.exe",SW_SHOWMAXIMIZED);//以最大化的方式打开Test.exe需要注意的是若用SW_SHOWMAXMIZED方式去加载一个无最大化按钮的程序,譬如Neterm,Calc等等,就不会出现正常的窗体,但是已经被加到任务列表里了。ShellExecute原型如下:HINSTANCEShellExecute(HWNDhwnd,//父窗口句柄LPCTSTRlpOperation,//操作,打开方式(“edit”,“explore”,“o
4、pen”,“find”,“print”,“NULL”)LPCTSTRlpFile,//文件名,前面可加路径LPCTSTRlpParameters,//参数LPCTSTRlpDirectory,//默认文件夹INTnShowCmd//显示方式)使用方法如下:ShellExecute(NULL,"open","C:\Test.txt",NULL,NULL,SW_SHOWNORMAL);//打开C:Test.txt文件ShellExecute(NULL,"open","http://www.google.com",NULL,NU
5、LL,SW_SHOWNORMAL);//打开网页www.google.comShellExecute(NULL,"explore","D:\C++",NULL,NULL,SW_SHOWNORMAL);//打开目录D:C++ShellExecute(NULL,"print","C:\Test.txt",NULL,NULL,SW_HIDE);//打印文件C:Test.txtShellExecute不支持定向输出。CreateProcess原型如下:BOOLCreateProcess(LPCTSTRlpApplication
6、Name,//执行程序名LPTSTRlpCommandLine,//参数行//下面两个参数描述了所创建的进程和线程的安全属性,如果为NULL则使用默认的安全属性LPSECURITY_ATTRIBUTESlpProcessAttributes,//processsecurityattributesLPSECURITY_ATTRIBUTESlpThreadAttributes,//threadsecurityattributesBOOLbInheritHandles,//继承标志DWORDdwCreationFlags,//创建标
7、志LPVOIDlpEnvironment,//环境变量LPCTSTRlpCurrentDirectory,//运行该进程的初始目录LPSTARTUPINFOlpStartupInfo,//用于在创建子进程时设置各种属性LPPROCESS_INFORMATIONlpProcessInformation//用于在进程创建后接受相关信息)使用方法如下:PROCESS_INFORMATIONpi;STARTUPINFOsi;memset(&si,0,sizeof(si));si.cb=sizeof(si);si.wShowWindow
8、=SW_SHOW;si.dwFlags=STARTF_USESHOWWINDOW;boolfRet=CreateProcess("D:\putty.exe",NULL,NULL,FALSE,NULL,NULL,NULL,NULL,&si,&pi);可以看出,通过上面的几个不