MFC调用一个程序的方法

上传人:平*** 文档编号:11202516 上传时间:2017-10-12 格式:DOC 页数:8 大小:104.67KB
返回 下载 相关 举报
MFC调用一个程序的方法_第1页
第1页 / 共8页
MFC调用一个程序的方法_第2页
第2页 / 共8页
MFC调用一个程序的方法_第3页
第3页 / 共8页
MFC调用一个程序的方法_第4页
第4页 / 共8页
MFC调用一个程序的方法_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《MFC调用一个程序的方法》由会员分享,可在线阅读,更多相关《MFC调用一个程序的方法(8页珍藏版)》请在金锄头文库上搜索。

1、所以感觉你这里的 PID 号给了个固定值,应该抓不住对话框。下面这段能够抓对话框,不知道是你要的效果么void C 对话框中嵌对话框 Dlg:OnBnClickedOk()/ TODO: 在此添加控件通知处理程序代码CRect rec;CWnd:GetClientRect(&rec); HWND hWnd = :FindWindow(NULL, _T(TestDlg);:SetWindowPos(hWnd, NULL, 0,0,0,0,SWP_NOMOVE|SWP_NOZORDER|SWP_NOSIZE|SWP_FRAMECHANGED);:SetParent(hWnd, this-GetSa

2、feHwnd();: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 , CreateP

3、rocess 可以实现调用其他程序的要求,其中以 WinExec 最为简单, ShellExecute 比WinExec 灵活一些, CreateProcess 最为复杂。WinExec 两个参数,前一个指定路径,后一个指定显示方式。ShellExecute 可以指定工作目录,并且还可以寻找文件的关联直接打开不用加载与文件关联的应用程序,ShellExecute 还可以打开网页,启动相应的邮件关联发送邮件等等。CreateProcess 一共有十个参数,不过大部分都可以用 NULL 代替,它可以指定进程的安全属性,继承信息,类的优先级等等。如果我们要得到足够多的关于新的进程的信息,控制新的进程

4、的细节属性,若要达到这些目的,我们就需要使用 CreateProcess 函数了。三个 SDK 函数( WinExec、ShellExec、CrateProcess )的语法:WinExec这个函数最简单,只有两个参数,原型如下:UINT WinExec(LPCSTR lpCmdLine, / 命令路径UINT uCmdShow / 显示方式;lpCmdLine:指向一个空结束的字符串,串中包含将要执行的应用程序的命令行(文件名加上可选参数)。uCmdShow:定义 Windows 应用程序的窗口如何显示,并为CreateProcess 函数提供 STARTUPINFO 参数的 wShowWi

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

6、试 SW_MINIMIZED 或SW_MAXIMIZED。WinExec 不允许用 CreateProcess 获得的所有选项,而它的确简单。使用方法如下:WinExec(Notepad.exe, SW_SHOW); / 打开记事本WinExec(D:/Program Files/Test/Test.exe,SW_SHOWMAXIMIZED); / 以最大化的方式打 Test.exe 其中这里的SW_SHOW,SW_SHOWMAXIMIZED 都是执行程序时窗口的显示方式,在winuser.h 中定义。需要注意的是若用 SW_SHOWMAXMIZED 方式去加载一个无最大化按钮的程序,譬如 N

7、eterm,Calc 等等,就不会出现正常的 窗体,但是已经被加到任务列表里了。ShellExecute原型如下:HINSTANCE ShellExecute(HWND hwnd, /父窗口句柄LPCTSTR lpOperation, /操作, 打开式edit,explore,open,find,print,NULLLPCTSTR lpFile, /文件名,前面可加路径LPCTSTR lpParameters, /参数LPCTSTR lpDirectory, /默认文件夹INT nShowCmd /显示方式);参数:hwnd:指向父窗口的窗口句柄。此窗口接收应用程序产生的任何信息框。lpOpe

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

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

10、: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

11、 运行程序,但通常只发送文档名,而命令解释程序则决定要运行那个程序。另外在打开目录文件夹时,ShellExecute 命令非常有用。使用方法如下:ShellExecute(NULL,open,C:/Test.txt,NULL,NULL,SW_SHOWNORMAL); / 打开 C:/Test.txt 文件ShellExecute(NULL, open, http:/, NULL, NULL, SW_SHOWNORMAL); / 打开网页 ShellExecute(NULL,explore, D:/C+,NULL,NULL,SW_SHOWNORMAL); / 打开目录 D:/C+ShellExe

12、cute(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 / 可替换为 windows.h#include 如果定义

13、了头文件 #include 的话就不必定义#include 了,windows.h 不光是包含了shellapi.h,它还定义了许多数据类型,如果没有这些数据类型,shellapi.h 本身会出错。2、定义路径C+中所表示的路径要用 / 而不是平常所用的 / ,所以以上三个函数表示路径都为:Disk:/Directory/./File nameWinExec(D:/Program Files/Test/Test.exe,SW_SHOWMAXIMIZED);ShellExecute(NULL,open,C:/Test.txt,NULL,NULL,SW_SHOWNORMAL);bool fRet=CreateProcess(D:/putty.exe,NULL,NULL,FALSE,NULL,NULL,NULL,NULL,&si,&pi);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号