资源预览内容
第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
亲,该文档总共8页全部预览完了,如果喜欢就下载吧!
资源描述
所以感觉你这里的 PID 号给了个固定值,应该抓不住对话框。 下面这段能够抓对话框,不知道是你要的效果么 void C 对话框中嵌对话框 Dlg:OnBnClickedOk() / TODO: 在此添加控件通知处理程序代码 CRect rec; CWnd:GetClientRect( HWND hWnd = :FindWindow(NULL, _T(“TestDlg“); :SetWindowPos(hWnd, NULL, 0,0,0,0,SWP_NOMOVE|SWP_NOZORDER|SWP_NOSIZE|SW P_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这个函数最简单,只有两个参数,原型如下:UINT WinExec(LPCSTR lpCmdLine, / 命令路径UINT uCmdShow / 显示方式;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:/Program Files/Test/Test.exe“,SW_SHOWMAXIMIZE D); / 以最大化的方式打 Test.exe 其中这里的 SW_SHOW,SW_SHOWMAXIMIZED 都是执行程序时窗口的显示方式,在 winuser.h 中定义。 需要注意的是若用 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 /显示方式);参数: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_SHOWNOR MAL); / 打开 C:/Test.txt 文件ShellExecute(NULL, “open“, “http:/www.google.com“, NULL, NULL, SW_SHOWNORMAL); / 打开网页 www.google.comShellExecute(NULL,“explore“, “D:/C+“,NULL,NULL,SW_SHOWNOR MAL); / 打开目录 D:/C+ShellExecute(NULL,“print“,“C:/Test.txt“,NULL,NULL, SW_HIDE); /打印文件 C:/Test.txt ShellExecute 不支持定向输出。程序示例下面通过一个例子来说名 WinExec 和 ShellExecute 的使用。下面程序 有控制台程序示例,其使用两种不同的方法,打开文本文件。下面程序使用 WinExec,并明确指定使用记事本程序。然后,使用 ShellExecute,打开文 本文件。程序清单#include #include void main(int argc,char *argv) cout / 可替换为 windows.h#include 如果定义了头文件 #include 的话就不必定义#include 了,“windows.h“ 不光是包含了“shellapi.h“,它还 定义了许多数据类型,如果没有这些数据类型,shellapi.h 本身会出错。2、定义路径C+中所表示的路径要用 “ / “而不是平常所用的“ / “,所以以上三个函数表 示路径都为:Disk:/Directory/./File nameWinExec(“D:/Program Files/Test/Test.exe“,SW_SHOWMAXIMIZE D);ShellExecute(NULL,“open“,“C:/Test.txt“,NULL,NULL,SW_SHOWNOR MAL); bool fRet=CreateProcess(“D:/putty.exe“,NULL,NULL,FALSE,NULL,N ULL,NULL,NULL,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号