15,473
社区成员




SECURITY_ATTRIBUTES sa;
HANDLE hRead,hWrite;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
if (!CreatePipe(&hRead,&hWrite,&sa,0))
{
//ShowMessage("Error On CreatePipe()");
return 0;
}
STARTUPINFO si;
PROCESS_INFORMATION pi;
si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);
si.hStdError = hWrite;
si.hStdOutput = hWrite;
si.wShowWindow = SW_HIDE;
si.hStdInput = hRead;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
TCHAR cmd[] = _T("ncftpput -d d:\\dbug.log -e d:\\err.log -u skyftp -p dn2jv7s9 abc-cn.com \\ d:\\software\\X16-60997V.iso");
if (!CreateProcess(NULL, cmd,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
{
//::ShowMess("Error on CreateProcess()");
return 0;
}
CloseHandle(hWrite);
char buffer[4096] = {0};
DWORD bytesRead;
while (true)
{
if (ReadFile(hRead,buffer,4096,&bytesRead,NULL) == NULL) //程序移植阻塞在这里
break;
printf(buffer);
//mmo1->Lines->Add(buffer);
Sleep(200);
}
::CloseHandle(hRead);
(void) sprintf(line, "%-32s ETA: %3d:%02d %6.2f/%6.2f %-2.2s %6.2f %.2s/s %.1s",
localName,
minLeft,
secLeft,
done,
uTotal,
uStr,
rate,
rStr,
stall
);
/* Print the updated information. */
(void) fprintf(stderr, "\r%s", line);