2011-10-27 21 views
2

ユーザーがキーボード上のキーを押したときに電卓を閉じようとしています。しかし、p.killとp.CloseMainWindowは計算機をkillせず、実行されるシェルだけをkillします。cを使用して外部アプリケーションを閉じる方法

Process p = new Process(); 
p.StartInfo.FileName = "cmd"; 
p.StartInfo.Arguments = "/c calc "; 
p.StartInfo.CreateNoWindow = true; 
p.StartInfo.UseShellExecute = false; 
p.Start(); 
Console.WriteLine("Press any key to kill Calc"); 
Console.ReadKey(); 
p.CloseMainWindow(); 

p.Kill(); 

答えて

7

シェル(cmd)は使用せず、直接calcプロセスを実行してください。 Process.StartInfo.FileNameを "calc"に設定すると、それが実行されます(calc.exeがシステムパス上にあると仮定します)。

+0

感謝はbeautに動作します!!!!! –

+1

あなたはこの答えを検証しなければなりません...(私は少し遅すぎると言うかもしれません) – enguerran

3

電卓のプロセスを見つけてそれを殺す必要があります。実際には、2つのプロセスが作成されます.1つはcmd、もう1つは電卓です。あなたは最初のものだけを殺しています。

その他の解決策は、cmdを使用せずに電卓を直接起動することです。

0

プロセスがcalc.exeプロセスではなく、calcを実行するコマンドプロンプトであるためです。

名前でプロセスを見つけて、それを殺す、あなたはGetProcessByNameを使用する必要がありますするには、

は、こちらの例をご覧ください:C# Process Process.GetProcessesByName, Kill Process and Exit Event

関連する問題