0
我正在使用CreateProcess()創建基於多個控制檯的子進程。現在我有PI(Process Information)元素,例如PID,PHandle,hThread,Threadid。是否有可能使用這些元素爲該控制檯獲取Std句柄。如何在CreateProcess()之後爲控制檯獲取GetStdHandle(STD_OUTPUT_HANDLE)C++
我曾嘗試這個代碼,但在文件
bool __fastcall ProcessController::StartProcess(unsigned short WindowPosition=0)
{
PROCESS_INFORMATION pi;
STARTUPINFO si = {sizeof(si)};
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = WindowPosition;
if(CreateProcess(NULL,TEXT(PName.t_str()),NULL,NULL,true,0,NULL,NULL,&si,&pi))
{
PHandle = pi.hProcess;
PId = pi.dwProcessId;
PThreadHandle = pi.hThread;
PThreadId = pi.dwThreadId;
////////////////////////////////
HANDLE hOut;
COORD location = {0, 0};
char *buffer=NULL;
DWORD numberRead;
std::ofstream fileLog;
buffer = new TCHAR[BUFFER_SIZE];
fileLog.open ("C:\\Users\\SWDH\\Desktop\\hem.txt");
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
ReadConsoleOutputCharacter(hOut, buffer, BUFFER_SIZE, location, &numberRead);
fileLog << buffer ;
free(buffer);
fileLog.close();
/////////////////////////////////
SetWindowHandle();
return true;
}
}
「CreateProcess之後」 - 你的意思是你想要子進程的輸出句柄?因爲'GetStdHandle'獲取**你的**句柄,而不是你的孩子。 – MSalters