通过C++编程启动或关闭外部程序:
(1-1)启动程序
WinExec("G://test//TestApp.exe",SW_SHOW)正常
WinExec("G://test//TestApp.exe",SW_SHOWMINIMIZED)最小化
其它相关参数:
SW_HIDE 隐藏窗口,活动状态给令一个窗口
SW_MINIMIZE 最小化窗口,活动状态给令一个窗口
SW_RESTORE 用原来的大小和位置显示一个窗口,同时令其进入活动状态
SW_SHOW 用当前的大小和位置显示一个窗口,同时令其进入活动状态
SW_SHOWMAXIMIZED 最大化窗口,并将其激活
SW_SHOWMINIMIZED 最小化窗口,并将其激活
SW_SHOWMINNOACTIVE 最小化一个窗口,同时不改变活动窗口
SW_SHOWNA 用当前的大小和位置显示一个窗口,不改变活动窗口
SW_SHOWNOACTIVATE 用最近的大小和位置显示一个窗口,同时不改变活动窗口
SW_SHOWNORMAL 与SW_RESTORE相同
SW_MINIMIZE 最小化窗口,活动状态给令一个窗口
SW_RESTORE 用原来的大小和位置显示一个窗口,同时令其进入活动状态
SW_SHOW 用当前的大小和位置显示一个窗口,同时令其进入活动状态
SW_SHOWMAXIMIZED 最大化窗口,并将其激活
SW_SHOWMINIMIZED 最小化窗口,并将其激活
SW_SHOWMINNOACTIVE 最小化一个窗口,同时不改变活动窗口
SW_SHOWNA 用当前的大小和位置显示一个窗口,不改变活动窗口
SW_SHOWNOACTIVATE 用最近的大小和位置显示一个窗口,同时不改变活动窗口
SW_SHOWNORMAL 与SW_RESTORE相同
(1-2)针对(1-1)的简单变形
std::string m_exeString = "G://test//TestApp.exe";
int ret = WinExec(m_exeString.
c_str(), SW_SHOW);
if (ret > 31) cout<<"CALL SUCCESS"<<endl; //程序调用成功
if (ret ==0) cout<<"NOT ENOUGH MEMORY"<<endl; //内存不足
if (ret ==2) cout<<"ERROR_FILE_NOT_FOUND"<<endl; //找不到文件
if (ret ==3) cout<<"ERROR_PATH_NOT_FOUND"<<endl; //路径不对
if (ret ==11) cout<<"ERROR_BAD_FORMAT"<<endl; //exe文件损坏
if (ret ==0) cout<<"NOT ENOUGH MEMORY"<<endl; //内存不足
if (ret ==2) cout<<"ERROR_FILE_NOT_FOUND"<<endl; //找不到文件
if (ret ==3) cout<<"ERROR_PATH_NOT_FOUND"<<endl; //路径不对
if (ret ==11) cout<<"ERROR_BAD_FORMAT"<<endl; //exe文件损坏
【注】:
WinExec()函数的第一个参数是LPCSTR类型的,string转换成LPCSTR(即const char *)需要用到转换函数c_str();
================================================================================
(2-1) 关闭程序
(2-1) 关闭程序
system("TASKKILL /F /IM TestApp.exe") //直接关闭程序,不需要加路径
(2-2)针对(2-1)变形
std::string temp = std::string("TASKKILL /F /IM ") + std::string("TestApp.exe");
system(temp.c_str());
system(temp.c_str());