2013-03-13 1 views
0

Я хотел бы начать процесс, предоставив ему аргументы (не совсем уверен, что их можно назвать «аргументами» ... см. Ниже). Теперь это немного особенное:Запуск программы с аргументами, как правило, в ярлыке цели

  • Процесс представляет собой графический интерфейс (игра - Зов Duty 4 Multiplayer)
  • У меня есть ярлык для Windows для этого графического интерфейса с помощью следующей цели: "C:\\Path To Game\\game.exe" + connect [serverip] (обратите внимание на +). Когда я запускаю этот ярлык, запускается GUI и выполняет аргументы connect [serverip] (игра начинается и начинается с сервера).

Я попытался следующие:

  1. Process.Start("C:\\Path To Game\\game.exe + connect [serverip]");

    , но это, очевидно, заканчиваются Win32Exception "Система не может найти указанный файл".

  2. var psi = new ProcessStartInfo(); 
    psi.FileName = "C:\\Path To Game\\game.exe"; 
    psi.Arguments = "+ connect [serverip]"; 
    Process.Start(psi); 
    

    и это приводит к ошибке в графическом интерфейсе (игра не запускается и говорит «WIN_IMPROPER_QUIT_BODY»).

Любые идеи, как обеспечить эти аргументы к моему процессу?

ответ

2

Возможно ли вам необходимо установить WorkingDirectory для игры

string exePath = "C:\\Path To Game\\game.exe"; 
var psi = new ProcessStartInfo(); 
psi.FileName = exePath; 
psi.Arguments = "+ connect [serverip]"; 
psi.WorkingDirectory = Path.GetDirectoryName(exePath); 
Process.Start(psi); 
+0

Вот и все! Спасибо. – Otiel

0

Вариант 2 - путь туда, но что случилось с вашим «+»? Это не особый символ, который просто передавался команде, поэтому вам нужно включить его в начале psi.

+0

Извините, это была ошибка в моем вопросе (сейчас отредактировано). Я пробовал с '+', он не работает. – Otiel

0

Вы должны использовать:

psi.Arguments = "+connect [serverip]"; 

(без пробела между + и connect).

+0

Не работает, но спасибо ([@ sa_ddam213] (http://stackoverflow.com/a/15397275/825024) работает). – Otiel

Смежные вопросы