在VC++中,怎样从一个项目打开另一个项目已经编译完成的.exe文件?
现我想在点击项目A文档菜单中的一个按钮,来打开项目B已经编译完成的B.exe文件,该如何添加命令?本人实在小白,求大湿们说详细点哈……...
现我想在点击项目A文档菜单中的一个按钮,来打开项目B已经编译完成的B.exe文件,该如何添加命令?本人实在小白,求大湿们说详细点哈……
展开
2个回答
展开全部
要在应用程序中启动其他的应用程序,有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 //用于在进程创建后接受相关信息
);
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 //用于在进程创建后接受相关信息
);
展开全部
使用CreateProcess或ShellExecute函数,ShellExecute函数更简单。
举例:
//启动szDialPath程序,szDialPath为程序的全路径,例如:"D:\\123.exe"
if( (int)ShellExecute( NULL, "open", szDialPath, NULL, NULL, SW_SHOWNORMAL ) < 32 )
{
MessageBox( NULL, "您没有安装拨号软件!", 0, 0 );
return 0;
}
须引入#include "ShellAPI.h"头文件
举例:
//启动szDialPath程序,szDialPath为程序的全路径,例如:"D:\\123.exe"
if( (int)ShellExecute( NULL, "open", szDialPath, NULL, NULL, SW_SHOWNORMAL ) < 32 )
{
MessageBox( NULL, "您没有安装拨号软件!", 0, 0 );
return 0;
}
须引入#include "ShellAPI.h"头文件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询