在一个程序中打开其它应用程序
有些时候,我们需要在一个应用程序中打开另外的应用程序,我这几天就做了这样的事,总结了一些东西,希望可以跟大家一起分享和交流一下。其中有可能有一些东西是错误的或者走了弯路,恳请大家能够给我提意见!另外我这些天一直在学习多线程与多进程,期待找到一些共同进步的人!
闲话少说了,还是回答主题上面来。要在应用程序中启动其他的应用程序,有3个函数可以使用,下面我一一说说他们(我以打开D:Program Fileszeecalls目录下的zeecalls.exe应用程序为例):
1、Winexec
这个函数最简单,只有两个参数,原型如下:
UINT WinExec(
LPCSTR lpCmdLine, // address of command line
UINT uCmdShow // window style for new application
);
使用方法如下:
WinExec(_T("D:Program Fileszeecallszeecalls.exe"),SW_SHOWMAXIMIZED);
这句话将会以最大化的方式打开zeecalls.exe,需要注意的是,在VC中,‘/’需要以‘//’来写。
2、ShellExecute
shellExecute比WinExex灵活一点,所以参数就要多一点,原型如下:
HINSTANCE ShellExecute(
HWND hwnd, //父窗口句柄
LPCTSTR lpOperation,//打开方式
LPCTSTR lpFile, //待打开的文件名
LPCTSTR lpParameters, LPCTSTR lpDirectory,//文件路径
INT nShowCmd );
同样,我们也可以通过这个函数来打开我们需要的文件:
ShellExecute(NULL,_T("open"),_T("zeecalls.exe"),NULL,_T("D:Program Fileszeecalls"),SW_SHOWNORMAL);
这句话是以用正常的显示方式打开zeecalls.exe
3、CreateProcess
上面的几种方式都实现了我们在自己的应用程序中打开其他的应用程序的目的,但是,我们没有得到足够多的关于新的进程的信息,也没有使用过多的手段去控制新的进程的细节属性,所以,如果要达到这些目的,我们就需要使用CreateProcess函数了,首先看看这个函数的原型:
BOOL CreateProcess(
LPCTSTR lpApplicationName, //执行程序名
LPTSTR lpCommandLine, // 参数行
//下面两个参数描述了所创建的进程和线程的安全属性,如果为NULL则使用默认的安全属性
LPSECURITY_ATTRIBUTES lpProcessAttributes, // process security attributes
LPSECURITY_ATTRIBUTES lpThreadAttributes, // thread security attributes
- 上一篇:弹出窗口杀手(上)
- 下一篇:MFC:thunk技术实现窗口类的封装[图]