はいできます。
private string _output = "";
public string Execute()
{
try
{
Process process = new Process();
process.OutputDataReceived += new DataReceivedEventHandler(process_OutputDataReceived);
process.StartInfo.FileName = "path to exe";
process.StartInfo.Arguments = "here you can pass arguments to exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
Process currentProcess = Process.GetCurrentProcess();
process.StartInfo.UserName = currentProcess.StartInfo.UserName;
process.StartInfo.Password = currentProcess.StartInfo.Password;
process.Start();
process.BeginOutputReadLine();
process.WaitForExit();
return _output;
}
catch (Exception error)
{
return "ERROR : " + error.Message;
}
}
private void process_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
if (e.Data != null)
{
_output += e.Data + Environment.NewLine;
}
}
これは簡単な例です。異なるスレッドを使用して、exeからの出力とエラーを読み取ることができます。
自分で処理するプロトコルを追加できますが、問題はありません。しかし、アプリケーション自体には引数はありません。手動でコマンドラインを実行しても、引数はありません。私はMyApp.ApplicationまたはSetup.exeを実行することしかできず、両方とも実際のアプリケーションに引数を渡すようには見えません...? – Ropstah
hkeyに%1が含まれていますか? –
はい。私はアプリケーションにクエリーストリングのパラメータを渡すことを含む別の解決策を見つけました。これは私のために働いています(ただし、Firefoxではありません..... ClickOnceはFFで正しく動作していません)。 – Ropstah