在VS2010的MFC开发中,如何运行一个外部的BAT批处理文件?

时间:2022-05-31 23:11:16
我用vs2010 开发环境,MFC应用程序中如何运行一个在桌面的BAT批处理文件。批处理文件名字mysqlconfig.bat。

9 个解决方案

#1


createprocess不行么

#2


1.CreateProcess
2.ShellExecute
   ShellExecute(NULL,_T("open"),GetAppPath()+_T("Install.bat"),NULL,NULL,SW_SHOW);
   //GetAppPath()+_T("Install.bat") 改为你要的绝对路径
3.WinExec

#3


引用 1 楼 fishion 的回复:
createprocess不行么

不会用,新人。在学习中。

#4


引用 2 楼 tiger9991 的回复:
1.CreateProcess
2.ShellExecute
   ShellExecute(NULL,_T("open"),GetAppPath()+_T("Install.bat"),NULL,NULL,SW_SHOW);
   //GetAppPath()+_T("Install.bat") 改为你要的绝对路径
3.WinExec


 //GetAppPath()+_T("Install.bat") 改为你要的绝对路径
这个整一个改为一个绝对路径吗?还是要加上后面_T(。。。);

#5


要慢慢习惯看MSDN

#6


_T("Install.bat") 这个是字符串拼接

_T是MFC里面的_TEXT,用来处理Unicode和多字符的宏。你可以无视的

#7


STARTUPINFO si;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
PROCESS_INFORMATION pi;
BOOL ret = ::CreateProcess(strUpdateAppName.c_str(), szCmdLine2 , NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);



或者
HINSTANCE Hinst = ShellExecute(GetHWND(),_T("open"),strUpdateAppName.c_str(),(LPWSTR)szCmdLine,NULL,SW_SHOWNORMAL);
if ((int) Hinst <= 32)
{
OnTipMessage (_T("创建升级窗口失败!"));
}

#8


用ShellExecute比较方便,也比较安全。
引用 7 楼 blutter 的回复:
STARTUPINFO si;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
PROCESS_INFORMATION pi;
BOOL ret = ::CreateProcess(strUpdateAppName.c_str(), szCmdLine2 , NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);



或者
HINSTANCE Hinst = ShellExecute(GetHWND(),_T("open"),strUpdateAppName.c_str(),(LPWSTR)szCmdLine,NULL,SW_SHOWNORMAL);
if ((int) Hinst <= 32)
{
OnTipMessage (_T("创建升级窗口失败!"));
}

#9


学习了,谢谢

#1


createprocess不行么

#2


1.CreateProcess
2.ShellExecute
   ShellExecute(NULL,_T("open"),GetAppPath()+_T("Install.bat"),NULL,NULL,SW_SHOW);
   //GetAppPath()+_T("Install.bat") 改为你要的绝对路径
3.WinExec

#3


引用 1 楼 fishion 的回复:
createprocess不行么

不会用,新人。在学习中。

#4


引用 2 楼 tiger9991 的回复:
1.CreateProcess
2.ShellExecute
   ShellExecute(NULL,_T("open"),GetAppPath()+_T("Install.bat"),NULL,NULL,SW_SHOW);
   //GetAppPath()+_T("Install.bat") 改为你要的绝对路径
3.WinExec


 //GetAppPath()+_T("Install.bat") 改为你要的绝对路径
这个整一个改为一个绝对路径吗?还是要加上后面_T(。。。);

#5


要慢慢习惯看MSDN

#6


_T("Install.bat") 这个是字符串拼接

_T是MFC里面的_TEXT,用来处理Unicode和多字符的宏。你可以无视的

#7


STARTUPINFO si;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
PROCESS_INFORMATION pi;
BOOL ret = ::CreateProcess(strUpdateAppName.c_str(), szCmdLine2 , NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);



或者
HINSTANCE Hinst = ShellExecute(GetHWND(),_T("open"),strUpdateAppName.c_str(),(LPWSTR)szCmdLine,NULL,SW_SHOWNORMAL);
if ((int) Hinst <= 32)
{
OnTipMessage (_T("创建升级窗口失败!"));
}

#8


用ShellExecute比较方便,也比较安全。
引用 7 楼 blutter 的回复:
STARTUPINFO si;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
PROCESS_INFORMATION pi;
BOOL ret = ::CreateProcess(strUpdateAppName.c_str(), szCmdLine2 , NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);



或者
HINSTANCE Hinst = ShellExecute(GetHWND(),_T("open"),strUpdateAppName.c_str(),(LPWSTR)szCmdLine,NULL,SW_SHOWNORMAL);
if ((int) Hinst <= 32)
{
OnTipMessage (_T("创建升级窗口失败!"));
}

#9


学习了,谢谢