OSDN Git Service

Added 'Traditional Chinese' (Taiwanese) translation by 456Vv <123@456vv.com>.
[lamexp/LameXP.git] / src / Tool_Abstract.cpp
index a037524..2bb5add 100644 (file)
 
 #include "Tool_Abstract.h"
 
+#include "Global.h"
+
 #include <QProcess>
 #include <QMutex>
 #include <QMutexLocker>
 #include <QLibrary>
-#include <Windows.h>
+#include <QProcessEnvironment>
+#include <QDir>
 
 /*
  * Win32 API definitions
@@ -96,9 +99,14 @@ bool AbstractTool::startProcess(QProcess &process, const QString &program, const
        static AssignProcessToJobObjectFun AssignProcessToJobObjectPtr = NULL;
        
        QMutexLocker lock(m_mutex_startProcess);
-       
        emit messageLogged(commandline2string(program, args) + "\n");
 
+       QProcessEnvironment env = process.processEnvironment();
+       if(env.isEmpty()) env = QProcessEnvironment::systemEnvironment();
+       env.insert("TEMP", QDir::toNativeSeparators(lamexp_temp_folder2()));
+       env.insert("TMP", QDir::toNativeSeparators(lamexp_temp_folder2()));
+       process.setProcessEnvironment(env);
+       
        if(!AssignProcessToJobObjectPtr)
        {
                QLibrary Kernel32Lib("kernel32.dll");
@@ -132,6 +140,12 @@ bool AbstractTool::startProcess(QProcess &process, const QString &program, const
                return true;
        }
 
+       emit messageLogged("Process creation has failed :-(");
+       QString errorMsg= process.errorString().trimmed();
+       if(!errorMsg.isEmpty()) emit messageLogged(errorMsg);
+
+       process.kill();
+       process.waitForFinished(-1);
        return false;
 }