2016-01-05 3 views
2

Я хочу, чтобы небольшое приложение Qt могло переключаться между паровыми учетными записями быстро, используя пароль входа -login login в качестве параметров запуска. Проблема в том, что я не могу запустить steam.exe из моего приложения Qt с необходимыми аргументами. Вот код:QProcess не может передать аргументы

QString path("C:\\Program Files (x86)\\Steam"); 
QStringList arg; 
arg << "-launch 123 123"; 
QString item = arg.takeAt(0); 
QString res("Steam.exe"); 
QString program = "\"" + path + "/" + res + "\""; 
QProcess* process = new QProcess(); 
process->startDetached(program, arg); 

ответ

5

Есть 3 проблемы с кодом в вашем вопросе:

  1. QString item = arg.takeAt(0); Здесь takeAt(0) удаляет свой аргумент из arg -list. Поэтому в тот момент, когда вы проходите arg до startDetached, он уже пуст.

  2. В качестве аргумента командной строки вам необходимо использовать -login вместо -launch. См. Steam support documentation.

  3. Вам необходимо передать имя пользователя и пароль в качестве отдельных аргументов, поэтому QStringList arg = QStringList() << "-login" << "123" << "123"; вместо QStringList arg; arg << "-launch 123 123";.

0

Решение для меня было:

QStringList arg; 
    arg << "-login"; 
    arg << "123"; 
    arg << "123"; 

вместо:

arg << "-launch 123 123";