1回顶部 有些时候,我们需要在一个应用程序中打开另外的应用程序,我这几天就做了这样的事,总结了一些东西,希望可以跟大家一起分享和交流一下。其中有可能有一些东西是错误的或者走了弯路,恳请大家能够给我提意见!另外我这些天一直在学习多线程与多进程,期待找到一些共同进步的人!
2回顶部 3、CreateProcess 上面的几种方式都实现了我们在自己的应用程序中打开其他的应用程序的目的,但是,我们没有得到足够多的关于新的进程的信息,也没有使用过多的手段去控制新的进程的细节属性,所以,如果要达到这些目的,我们就需要使用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 //用于在进程创建后接受相关信息 ); 在上面的参数中,使用了两个比较重要的数据结构:STARTUPINFO和PROCESS_INFORMATION。这两个结构的定义分别如下: typedef struct _STARTUPINFO { // si DWORD cb; //结构长度 LPTSTR lpReserved; //保留 LPTSTR lpDesktop; //保留 LPTSTR lpTitle; //如果为控制台进程则为显示的标题 DWORD dwX; //窗口横坐标 DWORD dwY; //窗口丛坐标 DWORD dwXSize; //窗口宽度 DWORD dwYSize; //窗口高度 DWORD dwXCountChars; //控制台窗口字符号宽度 DWORD dwYCountChars; //控制台窗口字符号高度 DWORD dwFillAttribute; //控制台窗口填充模式 DWORD dwFlags; //创建标记 WORD wShowWindow; //窗口显示标记,如同ShowWindow中的标记 3回顶部 WORD cbReserved2; //保留参数 LPBYTE lpReserved2; //保留参数 HANDLE hStdInput; //标准输入句柄 HANDLE hStdOutput; //标准输出句柄 HANDLE hStdError; //标准错误句柄 } STARTUPINFO, *LPSTARTUPINFO; typedef struct _PROCESS_INFORMATION { // pi HANDLE hProcess; //进程句柄 HANDLE hThread; //进程的主线程句柄 DWORD dwProcessId; //进程的ID DWORD dwThreadId; //进程的主线程ID } PROCESS_INFORMATION; 作为例子,我们来看看如何使用CreateProcess来打开相同的文件: 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:\\Program Files\\zeecalls\\zeecalls.exe",NULL,NULL,FALSE,NULL,NULL,NULL,NULL,&si,&pi); 可以看出,通过上面的几个不同的方法,都可以实现在应用程序中打开其他应用程序的目的,以上几种方法可能有些会麻烦一点,所以就需要我们根据不同的目的去选择最适合自己的方法去实现自己的目的! 最后,我希望大家可以多给我提提意见,因为我也是初学,有许多地方还不是很明白,有些方法可能是走弯路的,这就需要大家给我帮助了! |
鏀惰棌鎴愬姛鏌ョ湅鏀惰棌>>
正在阅读:在一个程序中打开其它应用程序在一个程序中打开其它应用程序
2004-04-22 10:16
出处:CSDN
责任编辑:linjixiong