关于CreatProcess的问题

xin_zzq1 2011-09-05 02:18:16
有没有人使用CreatProcess调用adb.exe命令.我每次使用CreatProcess的时候都不成功。
代码如下:

m_Command
CString strCommand = _T("D:\\MyProject\\adb.exe");
strCommand.AppendFormat(_T("/C %s"),m_Command);
SECURITY_ATTRIBUTES Sa;
HANDLE hRead,hWrite;
Sa.nLength=sizeof(SECURITY_ATTRIBUTES);
Sa.bInheritHandle=TRUE;
Sa.lpSecurityDescriptor=NULL;
if(!CreatePipe(&hRead,&hWrite,&Sa,0))
{
AfxMessageBox(_T("Error On CreatePipe()"));
return false;
}
STARTUPINFO si;
PROCESS_INFORMATION pi;
si.cb=sizeof(STARTUPINFO);
GetStartupInfo(&si);
si.hStdError=hWrite;
si.hStdOutput=hWrite;
si.wShowWindow=SW_HIDE;
si.dwFlags=STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
if (!CreateProcessW(NULL,strCommand.GetBuffer(strCommand.GetLength())
,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi)) {
AfxMessageBox(_T("Error on CreateProcess()"));
return false;
}
CloseHandle(hWrite);

char buffer[4096] = {0};
DWORD bytesRead;
while (true) {
if (ReadFile(hRead,buffer,4095,&bytesRead,NULL) == NULL)
return false;
CString str;
str.Format(_T("%s"),buffer);
Sleep(200);
}


其中m_Command的值是adb devices >D:\\MyProject\\devices.txt
每次都不成功。我想错误是CreatProcess的第二参数lpCommandLine。但是我不知道VC++调用adb命令怎么改正。
有没有人遇到这样的问题。
...全文
223 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gloveing 2011-09-05
  • 打赏
  • 举报
回复
jkj9999 2011-09-05
  • 打赏
  • 举报
回复
接分接分
hxfjb 2011-09-05
  • 打赏
  • 举报
回复
好接分!
顺便提示一下:你的重定位中,文件两边没有使用双引号,对如下的路径,你可能会出问题!
c:\program files\result.txt
许文君 2011-09-05
  • 打赏
  • 举报
回复
自问自答?
xin_zzq1 2011-09-05
  • 打赏
  • 举报
回复
问题解决了,原来lpCommandLine参数是 D:\MyProject\adb.exe devices
大家来接分吧·

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧