91 HINSTANCE hPrevInstance,
98 AttachConsole(ATTACH_PARENT_PROCESS);
107 DWORD creationFlags = 0;
108 if (!isConsolePresent)
109 creationFlags |= CREATE_NO_WINDOW;
112 STARTUPINFO startupInfo;
113 ZeroMemory(&startupInfo,
sizeof(startupInfo));
114 startupInfo.cb =
sizeof(startupInfo);
115 startupInfo.dwFlags = STARTF_USESTDHANDLES;
116 startupInfo.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
117 startupInfo.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
118 startupInfo.hStdError = GetStdHandle(STD_ERROR_HANDLE);
121 PROCESS_INFORMATION processInfo;
122 success = CreateProcessW(NULL,
133 fprintf(stderr,
"Internal error %d creating process.\n", GetLastError());
138 WaitForSingleObject(processInfo.hProcess, INFINITE);
142 success = GetExitCodeProcess(processInfo.hProcess, &exitCode);
144 fprintf(stderr,
"Internal error %d getting exit code.\n", GetLastError());
167 HANDLE conoutHandle = CreateFileW(L
"CONOUT$",
172 FILE_ATTRIBUTE_NORMAL,
174 if (conoutHandle == INVALID_HANDLE_VALUE)
178 CloseHandle(conoutHandle);
195 osfHandle = _open_osfhandle
196 (reinterpret_cast<intptr_t>(GetStdHandle(STD_INPUT_HANDLE)),
199 file = _fdopen(osfHandle,
"r");
205 osfHandle = _open_osfhandle
206 (reinterpret_cast<intptr_t>(GetStdHandle(STD_OUTPUT_HANDLE)),
209 file = _fdopen(osfHandle,
"w");
212 setvbuf(stdout, NULL, _IONBF, 0);
217 osfHandle = _open_osfhandle
218 (reinterpret_cast<intptr_t>(GetStdHandle(STD_ERROR_HANDLE)),
221 file = _fdopen(osfHandle,
"w");
224 setvbuf(stderr, NULL, _IONBF, 0);
static BOOL IsConsolePresent()
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)