QProcess мгновенно завершает работу без вывода при использовании rundll32 Windows - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь запустить исправляющий dll для Властелина Колец Онлайн с QProcess и получить вывод, но он работает только в Linux (где я делаю это через wine с QProcess).

IЯ много пытался безуспешно и пришел к выводу, что проблема может быть в том, что rundll32 запускает патчер как отдельный процесс, который не отслеживается QProcess.Это даже на самом деле не работает, потому что исправление, по крайней мере, в моем тестировании (другие говорят, что оно иногда срабатывало) не произошло.

from qtpy import QtCore, QtWidgets
import sys

class PatchWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.setFixedSize(720, 400)

        self.txtLog = QtWidgets.QTextBrowser(self)
        self.txtLog.setGeometry(5,5,710,351)

        self.process = QtCore.QProcess()
        self.process.readyReadStandardOutput.connect(self.readOutput)
        self.process.readyReadStandardError.connect(self.readErrors)
        self.process.finished.connect(self.processFinished)

        self.process.setWorkingDirectory("C:/LOTRO/")

        self.show()

        self.startProcess()

    def readOutput(self):
        line = self.process.readAllStandardOutput()
        line = str(line, encoding="utf8", errors="replace")
        self.txtLog.append(line)

    def readErrors(self):
        line = self.process.readAllStandardError()
        line = str(line, encoding="utf8", errors="replace")
        self.txtLog.append(line)

    def processFinished(self, exitCode, exitStatus):
        self.txtLog.append("Process Finished")

    def startProcess(self):
        self.process.start("rundll32 patchclient.dll,Patch patch.lotro.com:6015 --language DE --productcode LOTRO --highres")
        self.txtLog.append("Process Started")

app = QtWidgets.QApplication(sys.argv)
PatchWindow = PatchWindow()

sys.exit(app.exec_())

Должен быть вывод, подобный

Connecting to patch.lotro.com:6015

Checking files...
files to patch: 0 bytes to download: 0
Patching files:

File patching complete

, но там ничего нет.Фактический код для этого здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...