自己想写个界面的小工具, 点一个 button 就向已经打开的 cmd 窗口发送一条命令(所有命令都在这一个 cmd 窗口处理) 我采用的是匿名管道 现在目前遇到的问题是 我点击 button 之后没有程序没有反应, 既没有报错也没有崩溃 尝试打印信息之后,发现程序运行到创建进程之后就过不去了,开了任务管理器也没有发现有 cmd 进程 哪位能指点一下或者提供一下能实现我这需求的思路也行 代码如下
void CeeDlg::OnBnClickedButton3()
{
// TODO: 在此添加控件通知处理程序代码
DWORD ErrorCode;
DWORD dw = -1;
char ErrorString[500];
HANDLE hRead, hWrite, dWrite, dRead;
SECURITY_ATTRIBUTES sa; //创建安全信息结构体
sa.bInheritHandle = true;
sa.lpSecurityDescriptor = 0;
sa.nLength = sizeof(sa);
CreatePipe(&dRead, &dWrite, &sa, 4096); //创建输入管道
if (ErrorCode = GetLastError())
{
std::cout << "创建输出管道失败!" << std::endl;
}
STARTUPINFO si; //创建进程开始信息结构体
GetStartupInfo(&si);
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
si.wShowWindow = SW_SHOW;
si.hStdOutput = dRead;
si.hStdInput = dWrite;
CString temp2("C:\\Windows\\System32\\cmd.exe");
char cmdline[100];
sprintf_s(cmdline, "%s", temp2);
PROCESS_INFORMATION pi; //创建进程
CreateProcessW(_T("cmdline"), NULL, NULL, NULL, true, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi); //此为命令窗口所用的创建进程语句
if (rrorCode = GetLastError())
{
std::cout << "创建进程失败!" << std::endl;
MessageBox(_T("CreateProcess Failed!"), _T("提示"), MB_OK | MB_ICONWARNING);
}
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.