64,649
社区成员
发帖
与我相关
我的任务
分享
BOOL ExcuteCommand(const std::string &strCmd, UINT uCmdShow = SW_HIDE)
{
UINT uRet = WinExec(strCmd.c_str(), uCmdShow);
return (31 < uRet);
}
BOOL ExcuteCommand2(const std::string &strCmd, UINT uCmdShow = SW_HIDE)
{
// 打开本地文件
int iErr = (int)ShellExecute(NULL, _T("open"), "cmd.exe", strCmd.c_str(), NULL, uCmdShow);
if (SE_ERR_NOASSOC == iErr || SE_ERR_ACCESSDENIED == iErr)
{// 没有相关的程序能够打开该文件
}
else if (32 > iErr)
{
}
return (32 > iErr);
}
BOOL ExcuteCommand3(const std::string &strCmd, UINT uCmdShow = SW_HIDE)
{
PROCESS_INFORMATION pi;
STARTUPINFO si;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof STARTUPINFO;
si.wShowWindow = uCmdShow;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
BOOL res = CreateProcess(
NULL,
const_cast<char*>(strCmd.c_str()),
NULL,
NULL,
NULL,
NORMAL_PRIORITY_CLASS,
NULL,
NULL,
&si,
&pi);
if(res)
{
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
return TRUE;
}
void CRestartApplicationDlg::OnBnClickedBtnExec()
{
// TODO: 在此添加控件通知处理程序代码
SetDlgItemText(IDC_STATIC, "开始");
CString strCommand;
GetDlgItemText(IDC_EDIT_COMMAND, strCommand);
ExcuteCommand(strCommand.GetString(), SW_SHOW);
SetDlgItemText(IDC_STATIC, "运行结束");
}
void CRestartApplicationDlg::OnBnClickedBtnExec2()
{
// TODO: 在此添加控件通知处理程序代码
SetDlgItemText(IDC_STATIC, "开始");
CString strCommand;
GetDlgItemText(IDC_EDIT_COMMAND, strCommand);
ExcuteCommand2(strCommand.GetString(), SW_SHOW);
SetDlgItemText(IDC_STATIC, "运行结束");
}
void CRestartApplicationDlg::OnBnClickedBtnExec3()
{
// TODO: 在此添加控件通知处理程序代码
SetDlgItemText(IDC_STATIC, "开始");
CString strCommand;
GetDlgItemText(IDC_EDIT_COMMAND, strCommand);
ExcuteCommand3(strCommand.GetString(), SW_SHOW);
SetDlgItemText(IDC_STATIC, "运行结束");
}
SetDlgItemText(IDC_EDIT_COMMAND, "cmd.exe /c xcopy /e /c /y C:\\Users\\administrator\\Desktop\\test\\* C:\\Users\\administrator\\Desktop\\test2\\");
BOOL ExcuteCommand3(const std::string &strCmd, UINT uCmdShow = SW_HIDE)
{
PROCESS_INFORMATION pi;
STARTUPINFO si;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof STARTUPINFO;
si.wShowWindow = uCmdShow;
si.dwFlags = STARTF_USESHOWWINDOW /* | STARTF_USESTDHANDLES */; // STARTF_USESTDHANDLES会导致lpCommandLine传递错误(原因未明)
BOOL res = CreateProcess(
NULL,
const_cast<char*>(strCmd.c_str()),
NULL,
NULL,
NULL,
NORMAL_PRIORITY_CLASS,
NULL,
NULL,
&si,
&pi);
if(res)
{
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
return TRUE;
}