GH-1586 Windows: attach to the parent process console if there is any, so command line output gets printed there
This commit is contained in:
parent
54e5a98da0
commit
e07456f4bf
@ -52,10 +52,42 @@
|
|||||||
#include <FileSystem.h>
|
#include <FileSystem.h>
|
||||||
#include <DesktopServices.h>
|
#include <DesktopServices.h>
|
||||||
|
|
||||||
|
#if defined Q_OS_WIN32
|
||||||
|
#ifndef WIN32_LEAN_AND_MEAN
|
||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
#endif
|
||||||
|
#include <windows.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
using namespace Commandline;
|
using namespace Commandline;
|
||||||
|
|
||||||
MultiMC::MultiMC(int &argc, char **argv, bool test_mode) : QApplication(argc, argv)
|
MultiMC::MultiMC(int &argc, char **argv, bool test_mode) : QApplication(argc, argv)
|
||||||
{
|
{
|
||||||
|
#if defined Q_OS_WIN32
|
||||||
|
// attach the parent console
|
||||||
|
if(AttachConsole(ATTACH_PARENT_PROCESS))
|
||||||
|
{
|
||||||
|
// if attach succeeds, reopen and sync all the i/o
|
||||||
|
if(freopen("CON", "w", stdout))
|
||||||
|
{
|
||||||
|
std::cout.sync_with_stdio();
|
||||||
|
}
|
||||||
|
if(freopen("CON", "w", stderr))
|
||||||
|
{
|
||||||
|
std::cerr.sync_with_stdio();
|
||||||
|
}
|
||||||
|
if(freopen("CON", "r", stdin))
|
||||||
|
{
|
||||||
|
std::cin.sync_with_stdio();
|
||||||
|
}
|
||||||
|
auto out = GetStdHandle (STD_OUTPUT_HANDLE);
|
||||||
|
DWORD written;
|
||||||
|
const char * endline = "\n";
|
||||||
|
WriteConsole(out, endline, strlen(endline), &written, NULL);
|
||||||
|
consoleAttached = true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
setOrganizationName("MultiMC");
|
setOrganizationName("MultiMC");
|
||||||
setApplicationName("MultiMC5");
|
setApplicationName("MultiMC5");
|
||||||
|
|
||||||
@ -279,6 +311,15 @@ MultiMC::~MultiMC()
|
|||||||
{
|
{
|
||||||
removeTranslator(m_qt_translator.get());
|
removeTranslator(m_qt_translator.get());
|
||||||
}
|
}
|
||||||
|
#if defined Q_OS_WIN32
|
||||||
|
if(consoleAttached)
|
||||||
|
{
|
||||||
|
const char * endline = "\n";
|
||||||
|
auto out = GetStdHandle (STD_OUTPUT_HANDLE);
|
||||||
|
DWORD written;
|
||||||
|
WriteConsole(out, endline, strlen(endline), &written, NULL);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef Q_OS_MAC
|
#ifdef Q_OS_MAC
|
||||||
|
@ -176,6 +176,8 @@ private:
|
|||||||
QString rootPath;
|
QString rootPath;
|
||||||
|
|
||||||
Status m_status = MultiMC::Failed;
|
Status m_status = MultiMC::Failed;
|
||||||
|
|
||||||
|
bool consoleAttached = false;
|
||||||
public:
|
public:
|
||||||
QString launchId;
|
QString launchId;
|
||||||
std::shared_ptr<QFile> logFile;
|
std::shared_ptr<QFile> logFile;
|
||||||
|
Loading…
Reference in New Issue
Block a user