管道模式执行CMD程序后使用WriteFile函数写新指令,第三次时写入后回显出现More?,最后检查发现是由于写指令长度比实际指令长度多了一个字符导致!
void CExecCmdDlg::OnBnClickedBtnWrite()
{
if (!UpdateData()) return;
if (m_sCmd.IsEmpty())
{
MessageBox("未输入待执行的指令!", "错误", MB_ICONERROR);
GetDlgItem(IDC_EDIT_DATA)->SetFocus();
return;
}
m_sCmd += "\r\n";
m_pipe->Write((LPVOID)m_sCmd.GetBuffer(), <span style="color:#ff0000;">m_sCmd.GetLength()+1</span>);//将此处的加1去除后正常
}