0

ワーカーロールでコンソールプロセスを実行しようとしていますが、プロセスに設定した構成に関係なく、常にバックグラウンドで実行されています:

これらは私のコンソール設定です:

Process proc = new Process();

proc.StartInfo.FileName = "D:\\ZProcessing.exe" ; //console process

proc.StartInfo.UseShellExecute = false; 
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.CreateNoWindow = false;
proc.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;

proc.Start();
4

1 に答える 1

0

それを行う1つの方法は次のとおりです。

[DllImport("User32.dll")]
private static extern bool SetForegroundWindow(IntPtr hWnd);
private IntPtr handle;
private Process proc;

private void MyMethod()
{
  proc = new Process();
  proc.StartInfo.FileName = "D:\\ZProcessing.exe" ; //console process

  proc.StartInfo.UseShellExecute = false; 
  proc.StartInfo.RedirectStandardOutput = true;
  proc.StartInfo.RedirectStandardError = true;
  proc.StartInfo.CreateNoWindow = false;
  proc.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;

  proc.Start();

  // Find new window handle
  handle = proc.MainWindowHandle;

  // Set it to foreground
  SetForegroundWindow(handle);
}

残念ながら、私の知る限り、これは純粋な .NET では不可能です。上記は、現在ログオンしているユーザーと同じユーザーでプロセスを実行していることを前提としたソリューションです。

于 2013-05-02T08:20:14.777 に答える