已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
如何在vc程序中调用exe文件ShellExecute(this-m_hWnd,open,notepad.exe, c:scandisk.log,SW_SHOW ); 用创建独立子进程的方法。也可以不独立,下面的代码创建的子进程是独立的。BOOL ret;PROCESS_INFORMATION pi;STARTUPINFO si;si.cb = sizeof(si);si.wShowWindow = SW_SHOWNORMAL;ret = CreateProcess(_T(c:xx.exe),NULL,NULL,FALSE,0, NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&pi); if (ret) CloseHandle(pi.hThread); CloseHandle(pi.hProcess); 学习如何在程序中调用.exe文件 Posted on 2004-07-09 08:06 wngwz 阅读(587) 评论(1) 编辑 收藏 网摘 所属分类: .NET 学习 System.Diagnostics.Process proc = new System.Diagnostics.Process();/程序名称proc.StartInfo.FileName = mt3000.exe; /参数proc.StartInfo.Arguments = /p1 /b38400 /fstock /mr; /隐藏proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;/执行proc.Start(); WinExec(calc.exe,SW_SHOW);/调用计算器 ShellExec(NULL,open,calc.exe,NULL,NULL,SW_SHOW);/同上 CreateProcess./参数比较烦,懒得写关于在一个程序中调用另一个程序的exe文件2008-08-04 11:14 这两天在做音频识别的程序中,想将一个音频识别的程序加进我的大程序中。但是在加音频程序进来的时候,有很多的问题,无法加进去。迫于无奈,只得在大程序的音频识别一块调用音频识别的小程序的exe文件,效果也不错。我觉得以后也可以借鉴。以下是调别的程序的exe文件的小代码:SHELLEXECUTEINFO ShExecInfo = 0;ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;ShExecInfo.hwnd = NULL;ShExecInfo.lpVerb = NULL;ShExecInfo.lpFile = E:SimpleDictDebugsimpledict.exe;/别的程序的exe文件Info.lpParameters = ;ShExecInfo.lpDirectory = NULL;ShExecInfo.nShow = SW_SHOW;ShExecInfo.hInstApp = NULL;ShellExecuteEx(&ShExecInfo);WaitForSingleObject(ShExecInfo.hProcess,INFINITE);/执行完别的程序的exe文件后,返回主程序。 C+程序中调用exe可执行文件2007年10月15日 星期一 18:48当项目比较大的时候,通常会分开来开发,如果分开的部分只是一些函数或类,整合的时候 就可以使用静态库或动态库。但如果分开的是一个exe文件,整合的时候,就要通过调用exe文件来使用。尤其是当第三方软件是一个用c语言编写的exe文件时,更是需要如此。最近在我所开发的LCDS系统当中就碰到了这样的问题。他需要调用一个分类器来处理数据,而手头上的分类器是经典的C4.5决策树分类器,它是用c语言写的,没有.h头文件,生成的是一个exe文件,通过在命令行执行main函数来处理数据。如果想把其改成静态库或动态库,因为没有头文件,改写后似乎不好调用其函数,因此考虑直接调用其生成的exe文件。可考虑的方法有:1.使用system函数2.使用execl或execv函数3.使用WinExec函数4.使用CreateProcess函数5.使用ShellExecuteEx函数system函数和execl、execv函数不能控制程序窗口是否显示,我要的效果是不显示该exe程序的窗口,所以这两种方法不予考虑。WinExec函数不好控制主程序来等该exe程序的结束,所以放弃。CreateProcess函数是新建一个进程,所以,你必须人为地控制该进程的生死,不如ShellExecuteEx方便,所以最终我选择的是ShellExecuteEx函数。程序如下:SHELLEXECUTEINFO ShExecInfo = 0; ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO); ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS; ShExecInfo.hwnd = NULL; ShExecInfo.lpVerb = _T(open); ShExecInfo.lpFile = _T(c4.5.exe); ShExecInfo.lpParameters = _T(-f train); ShExecInfo.lpDirectory = NULL; ShExecInfo.nShow = SW_HIDE; ShExecInfo.hInstApp = NULL; ShellExecuteEx(&ShExecInfo); WaitCursorBegin();WaitForSingleObject(ShExecInfo.hProcess,INFINITE);WaitCursorEnd(); 比如c:notpad.exe 可以这么写(比如按钮按下) winexec(c:notpad.exe,1); 这样就行了回答人:软界网友我来回答回答(3)ShellExecute()也行回答人:软界网友我来回答回答(4)winexec(C:WINNTsystem32notepad.exe,0) 参数1:.exe文件全路径名 参数2: 控制参数关于在VC中调用其它EXE关键词: VC 调用 exe 三个SDK函数: WinExec,ShellExecute ,CreateProcess可以实现调用其他程序的要求,其中以WinExec最为简单,ShellExecute比WinExec灵活一些,CreateProcess最为复杂。 WinExec 两个参数,前一个指定路径,后一个指定显示方式。 ShellExecute 可以指定工作目录,并且还可以寻找文件的关联直接打开不用加载与文件关联的应用程序,ShellExecute还可以打开网页,启动相应的邮件关联发送邮件等等。 CreateProcess 一共有十个参数,不过大部分都可以用NULL代替,它可以指定进程的安全属性,继承信息,类的优先级等等。如果我们要得到足够多的关于新的进程的信息,控制新的进程的细节属性,若要达到这些目的,我们就需要使用CreateProcess函数了。 三个SDK函数( WinExec、ShellExec、CrateProcess )的语法: WinExec这个函数最简单,只有两个参数,原型如下: UINT WinExec( LPCSTR lpCmdLine, / 命令路径 UINT uCmdShow / 显示方式 ;使用方法如下:WinExec(Notepad.exe, SW_SHOW); / 打开记事本WinExec(D:Program FilesTestTest.exe,SW_SHOWMAXIMIZED); / 以最大化的方式打开Test.exe需要注意的是若用 SW_SHOWMAXMIZED 方式去加载一个无最大化按钮的程序,譬如Neterm,Calc 等等,就不会出现正常的 窗体,但是已经被加到任务列表里了。 ShellExecute原型如下: HINSTANCE ShellExecute( HWND hwnd, /父窗口句柄 LPCTSTR lpOperation, /操作, 打开方式 edit,explore,open,find,print,NULL LPCTSTR lpFile, /文件名,前面可加路径 LPCTSTR lpParameters, /参数 LPCTSTR lpDirectory, /默认文件夹 INT nShowCmd /显示方式);使用方法如下:ShellExecute(NULL,open,C:Test.txt,NULL,NULL,SW_SHOWNORMAL); / 打开C:Test.txt 文件ShellExecute(NULL, open, iexplore.exe,,/ NULL, NULL, SW_SHOWNORMAL); / 打开网页ShellExecute(NULL,explore, D:C+,NULL,NULL,SW_SHOWNORMAL); / 打开目录D:C+ShellExecute(NULL,print,C:Test.txt,NULL,NULL, SW_HIDE); / 打印文件C:Test.txtShellExecute不支持定向输出。 CreateProcess原型如下: BOOL CreateProcess( LPCTSTR lpApplicationName, /执行程序名 LPTSTR lpCommandLine, / 参数行 /下面两个参数描述了所创建的进程和线程的安全属性,如果为NULL则使用默认的安全属性 LPSECURITY_ATTRIBUTES lpProcessAttributes, / process security attributes LPSECURITY_ATTRIBUTES lpThreadAttributes, / thread security attributes BOOL bInheritHandles, / 继承标志 DWORD dwCreationFlags, / 创建标志 LPVOID lpEnvironment, / 环境变量 LPCTSTR lpCurrentDirectory, / 运行该进程的初始目录 LPSTARTUPINFO lpStartupInfo, / 用于在创建子进程时设置各种属性 LPPROCESS_INFORMATION lpProcessInformation /用于在进程创建后接受相关信息 使用方法如下: PROCESS_INFORMATION pi; STARTUPINFO si; memset(&si,0,sizeof(si); si.cb=sizeof(si); si.wShowWindow=SW_SHOW; si.dwFlags=STARTF_USESHOWWINDOW; bool fRet=CreateProcess(D:putty.exe,NULL,NULL,FALSE,NULL,NULL,NULL,NULL,&si,&pi); 可以看出,通过上面的几个不同的方法,都可以实现在应用程序中打开其他应用程序的目的,其中有些方法可能会麻烦一点,所以就需要我们根据不同的目的去选择最适合自己的方法去实现自己的目的! 关于三个SDK函数: WinExec, ShellExecute,CreateProcess 的注意1、定义头文件在头文件stdafx.h中必须定义以下两个头文件:#include / 可替换为 windows.h#include 如果定义了头文件 #include 的话就不必定义 #include 了,windows.h 不光是包含了shellapi.h,它还定义了许多数据类型,如果没有这些数据类型,shellapi.h本身会
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年下半年喀什地区医疗卫生事业单位遴选工作人员易考易错模拟试题(共500题)试卷后附参考答案
- 2025超市生意转让合同示范版
- 2025年下半年呼和浩特市事业单位招考工作人员易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年吉林长春师范大学招聘高级人才2人(4号)易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年吉林省通化市辉南县事业单位招聘5人(5号)易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年吉林省直事业单位招聘4人(15号)易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年吉林直事业单位招考第十七批拟聘用人员易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年吉安市吉水县广播电视台播音员招考易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年台州市水利水电勘测设计院限公司校园招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年南昌海关数据分中心招考合同制员工易考易错模拟试题(共500题)试卷后附参考答案
- 住房公积金追缴授权委托书
- 九三学社 入 社 申 请 表
- 三级安全教育登记卡(新)
- 《工贸企业重大事故隐患判定标准》
- 超声基础知识及临床应用演示
- 2022-2023部编新人教版小学6六年级数学上册(全册)教案
- 手电筒产品课程设计报告书
- 有机化学期中考试试题及参考答案
- 滕王阁序注音全文打印版
- FZ/T 01057.2-2007纺织纤维鉴别试验方法 第2部分:燃烧法
- 四川大学经济学院党政办公室工作人员招考聘用2人【共500题附答案解析】模拟检测试卷
评论
0/150
提交评论