




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
所以感觉你这里的PID号给了个固定值,应该抓不住对话框。下面这段能够抓对话框,不知道是你要的效果么voidC对话框中嵌对话框Dlg:OnBnClickedOk()/TODO:在此添加控件通知处理程序代码CRectrec;CWnd:GetClientRect(&rec);HWNDhWnd=:FindWindow(NULL,_T(TestDlg);:SetWindowPos(hWnd,NULL,0,0,0,0,SWP_NOMOVE|SWP_NOZORDER|SWP_NOSIZE|SWP_FRAMECHANGED);:SetParent(hWnd,this-GetSafeHwnd();:SetWindowPos(hWnd,NULL,0,0,rec.Width(),rec.Height(),SWP_NOZORDER);/CDialogEx:OnOK();vc+ 在程序中运行另一个程序的方法 2010-08-13 14:47 1419人阅读 评论(0) 收藏 举报 vc+nullattributes文档microsoftsecurity在vc+ 程序中运行另一个程序的方法有三个: WinExec(),ShellExcute()和CreateProcess()三个SDK函数:WinExec,ShellExecute,CreateProcess可以实现调用其他程序的要求,其中以WinExec最为简单,ShellExecute比WinExec灵活一些,CreateProcess最为复杂。WinExec两个参数,前一个指定路径,后一个指定显示方式。ShellExecute可以指定工作目录,并且还可以寻找文件的关联直接打开不用加载与文件关联的应用程序,ShellExecute还可以打开网页,启动相应的邮件关联发送邮件等等。CreateProcess一共有十个参数,不过大部分都可以用NULL代替,它可以指定进程的安全属性,继承信息,类的优先级等等。如果我们要得到足够多的关于新的进程的信息,控制新的进程的细节属性,若要达到这些目的,我们就需要使用CreateProcess函数了。三个SDK函数(WinExec、ShellExec、CrateProcess)的语法:WinExec这个函数最简单,只有两个参数,原型如下:UINTWinExec(LPCSTRlpCmdLine,/命令路径UINTuCmdShow/显示方式;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获得的所有选项,而它的确简单。使用方法如下:WinExec(Notepad.exe,SW_SHOW);/打开记事本WinExec(D:/ProgramFiles/Test/Test.exe,SW_SHOWMAXIMIZED);/以最大化的方式打Test.exe其中这里的SW_SHOW,SW_SHOWMAXIMIZED都是执行程序时窗口的显示方式,在winuser.h中定义。需要注意的是若用SW_SHOWMAXMIZED方式去加载一个无最大化按钮的程序,譬如Neterm,Calc等等,就不会出现正常的窗体,但是已经被加到任务列表里了。ShellExecute原型如下:HINSTANCEShellExecute(HWNDhwnd,/父窗口句柄LPCTSTRlpOperation,/操作,打开式edit,explore,open,find,print,NULLLPCTSTRlpFile,/文件名,前面可加路径LPCTSTRlpParameters,/参数LPCTSTRlpDirectory,/默认文件夹INTnShowCmd/显示方式);参数: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命令非常有用。使用方法如下:ShellExecute(NULL,open,C:/Test.txt,NULL,NULL,SW_SHOWNORMAL);/打开C:/Test.txt文件ShellExecute(NULL,open,,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不支持定向输出。程序示例下面通过一个例子来说名WinExec和ShellExecute的使用。下面程序有控制台程序示例,其使用两种不同的方法,打开文本文件。下面程序使用WinExec,并明确指定使用记事本程序。然后,使用ShellExecute,打开文本文件。程序清单#include #include void main(int argc,char *argv)cout”Opening withWinExec/n”;if (WinExec(“notepad readme.txt”,SH_SHOW)32)MessagBox(NULL,”CantWinExec”,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,”Cant ShellExecute/n”,NULL,MB_OK);CreateProcess原型如下:BOOLCreateProcess(LPCTSTRlpApplicationName,/执行程序名LPTSTRlpCommandLine,/参数行/下面两个参数描述了所创建的进程和线程的安全属性,如果为NULL则使用默认的安全属性LPSECURITY_ATTRIBUTESlpProcessAttributes,/processsecurityattributesLPSECURITY_ATTRIBUTESlpThreadAttributes,/threadsecurityattributesBOOLbInheritHandles,/继承标志DWORDdwCreationFlags,/创建标志LPVOIDlpEnvironment,/环境变量LPCTSTRlpCurrentDirectory,/运行该进程的初始目录LPSTARTUPINFOlpStartupInfo,/用于在创建子进程时设置各种属性LPPROCESS_INFORMATIONlpProcessInformation/用于在进程创建后接受相关信息;使用方法如下:PROCESS_INFORMATIONpi;STARTUPINFOsi;memset(&si,0,sizeof(si);si.cb=sizeof(si);si.wShowWindow=SW_SHOW;si.dwFlags=STARTF_USESHOWWINDOW;boolfRet=CreateProcess(D:/putty.exe,NULL,NULL,FALSE,NULL,NULL,NULL,NULL,&si,&pi);参数:lpApplicationName:指向一个以空结尾的串,他指定了要执行的模块lpCommandLine:指向一个以空结尾的串,该串定义了要执行的命令行。lpProcessAttributes:指向一个SECURITY_ATTRIBUTES结构,该结构决定了返回的句柄是否可被子进程继承。lpThreadAttributes:指向一个SECURITY_ATTRIBUTES结构,该结构决定了返回的句柄是否可被子进程继承。bInheritHandles,:表明新进程是否从调用进程继承句柄。dwCreationFlags:定义控制优先类和进程创建的附加标志。lpEnvironment:指向一个新进程的环境块。lpCurrentDirectory:指向一个以空结尾的串,该串定义了子进程的当前驱动器和当前目录。lpStartupInfo:指向一个STARTUPINFO结构,该结构定义了新进程的主窗口将如何显示。lpProcessInformation:指向PROCESS_INFORMATION结构,该结构接受关于新进程的表示信息。返回值:若函数调用成功,则返回值不为0;若函数调用失败,返回值为0。ShellExecute和WinExec命令用于简单的作业。如果要完全控制一个新进程,就必须调用CreateProcess。在上述参数中,参数lpStartupInfo是STARTUPINFO结构。可以用来设置控台的标题,新窗口的的初始大小和位置,及重定向标准输入和输出。新程序通常可以忽略多数这些数据项,如果选择那样做的话。可以规定该结构体中的标志,已表明要设置的数据段。有时,不想设置任何信息,也必须传递一个有效的指针给空结构(确定设置大小到cb,及设置dwFlags成员为0)。参数lpProcessInformation返回进程和线程句柄,还包括进程和线程ID。这些句柄拥有在参数lpProcessAttributes和lpThreadAttributes中规定的访问。要注意,针对CreateProcess的一些参数对控制台应用程序是特定的,而其它参数则对各种应用程序有用。大多数情况下,并不一定要填入STARTUPINFO结构,但无论如何必须提供它。其返回值是布尔型的,而真正感兴趣的返回值发生于作为参数传送的结构中(PROCESS_INFORMATION)。CreateProcess返回该结构中的进程ID
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教育信息化的发展趋势及策略
- 矿产资源勘查设计合同范本
- 康复器械与辅助器具的应用推广
- 高新技术产业财务担保合同会计处理与知识产权保护
- 提升办公效率的空间调整策略
- 公司旅游拓展活动方案
- 公司组织阅读活动方案
- 民航机场场地租赁及航空运输服务合同
- 车辆车身广告租赁代理协议
- 新媒体环境下初中道德与法治教学创新
- 先进成图技术教与学智慧树知到课后章节答案2023年下青岛滨海学院
- 初级会计师考试 经济法基础课件
- 上海交通大学毕业生思想政治品德情况表
- 23秋国家开放大学《EXCEL在财务中的应用》形考作业1-4参考答案
- 有限空间监理实施细则
- 新产品制造可行性及风险分析报告
- 采购预付款合同
- 2023年泸州市文化和旅游系统事业单位招聘笔试模拟试题及答案
- (中医内科)高级、副高级职称考试模拟试题及答案
- 跌倒坠床原因分析预防措施
- 弱电施工安全技术交底
评论
0/150
提交评论