分享
 
 
 

如何在一个应用程序中打开其他的应用程序

王朝vc·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

有些时候,我们需要在一个应用程序中打开另外的应用程序,我这几天就做了这样的事,总结了一些东西,希望可以跟大家一起分享和交流一下。其中有可能有一些东西是错误的或者走了弯路,恳请大家能够给我提意见!另外我这些天一直在学习多线程与多进程,期待找到一些共同进步的人!

闲话少说了,还是回答主题上面来。要在应用程序中启动其他的应用程序,有3个函数可以使用,下面我一一说说他们(我以打开D:\Program Files\zeecalls\目录下的zeecalls.exe应用程序为例):

1、Winexec

这个函数最简单,只有两个参数,原型如下:

UINT WinExec(

LPCSTR lpCmdLine, // address of command line

UINT uCmdShow // window style for new application

);

使用方法如下:

WinExec(_T("D:\\Program Files\\zeecalls\\zeecalls.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 Files\\zeecalls\\"),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

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中的标记

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);

可以看出,通过上面的几个不同的方法,都可以实现在应用程序中打开其他应用程序的目的,以上几种方法可能有些会麻烦一点,所以就需要我们根据不同的目的去选择最适合自己的方法去实现自己的目的!

最后,我希望大家可以多给我提提意见,因为我也是初学,有许多地方还不是很明白,有些方法可能是走弯路的,这就需要大家给我帮助了!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有