Tag: 进程

重定向但也显示进程输出流

我正在运行构建,我希望能够查看进展情况。 但是如果构建有错误,我还想保存输出。 我知道我可以使用Process.UseShellExecute = false和RedirectStandardOutput ,但这只是故事的一部分。 我怎样才能做到这一点?

即使具有管理员权限,Process.kill()在Windows 7 32位中被拒绝

大家好。 我遇到了一个奇怪的问题。 我的应用程序有一个简单的方法,如果IE进入一个状态是它得不到响应这个方法被解雇所有IE进程,然后应用程序重新启动它与IE的工作。 方法代码: foreach (System.Diagnostics.Process exe in System.Diagnostics.Process.GetProcesses()) { if (exe.ProcessName.StartsWith(“iexplore”)) exe.Kill(); } 即使使用管理员权限调试我的应用程序,应用程序有时也会成功运行此方法,有时我会收到错误Access Denied甚至以管理员身份运行。 我甚至编写了我自己的清单文件,指定需要使用管理员权限执行此应用程序,我认为我做对了。 清单代码: 以前有人有这个问题吗? 我怎样才能纠正这个奇怪的问题。 谢谢

即使在ProcessWindowStyle.Hidden之后,控制台窗口仍然会弹出;

我必须从我的Windows应用程序运行控制台应用程序。 我想运行的控制台应用程序是我的应用程序中的嵌入式资源,我这样称呼它: // Run the updater and grab its output Process Updater = new Process(); Updater.StartInfo.FileName = “C:\\tmp\\tmp.exe”; Updater.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; Updater.StartInfo.UseShellExecute = false; Updater.StartInfo.RedirectStandardOutput = true; Updater.Start(); string UpdaterOutput = Updater.StandardOutput.ReadToEnd(); Updater.WaitForExit(); 它提取精细,它运行良好,它也完全抓住它的输出…但我仍然可以看到控制台窗口在运行时快速弹出。 我知道控制台弹出来自此应用程序,因为控制台标题是C:\tmp\tmp.exe 。 是否有任何完全失败的方法来隐藏控制台应用程序? 我以为使用ProcessWindowStyle.Hidden会这样做,但显然不是。 谢谢。

C#处理呼叫,与标准输入和标准输出交互

我有一个单击按钮执行命令。 该命令可能会提示某些标准输入,我需要响应该输入,问题是程序运行的方式可能每天都不同,所以我需要解释标准输出并相应地重定向标准输入。 我有这段简单的代码,它逐行读取标准输出,当它看到密码提示时,它会发送标准输入,但程序只是挂起,因为它从未看到密码的提示,但是当我运行时批处理文件中有密码提示符。 这是我正在调用以执行此测试的批处理文件: @echo off echo This is a test of a prompt echo At the prompt, Enter a response set /P p1=Enter the Password: echo you entered “%p1%” 以下是从命令行运行时该批处理文件的输出: C:\Projects\SPP\MOSSTester\SPPTester\bin\Debug>test4.bat This is a test of a prompt At the prompt, Enter a response Enter the Password: Test1 you entered “Test1” 这是我用来调用挂起的批处理文件的C#片段: var proc […]

如何检测Kill Process事件

在C#中使用process.Kill()杀死一个进程,同时在kill应用程序中如何检测这个事件? BTW:Application.ApplicationExit事件尚未被解雇!

监视进程的子进程

我正在使用此代码运行.exe文件: Process proc = Process.Start(“c:\program.exe”); proc.WaitForExit(); 如果我在开始进程之前启动Stopwatch并在proc.WaitForExit();之后停止它proc.WaitForExit(); 我可以得到用户使用该特定程序的时间。 我面临的问题是一些程序(和游戏)使用启动器 – 一些小的.exe文件,通常检查一些东西,然后启动另一个.exe文件,实际上是用户想要运行的程序/游戏。 在这些情况下,上面的代码不起作用,因为它在启动器存在后返回。 如何跟踪proc运行的所有进程,并等待unitl所有进程终止?

C#exception。 文件正由另一个进程使用

我正在玩C#,我遇到了一个问题。 当我尝试创建一个新文件时,程序会断开并说该文件正被另一个进程使用。 这可能是我忽略的愚蠢,但我无法弄明白! 这是我的代码: using System; using System.IO; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace myNameSpace { public partial class MainWindow : Form { public static string folderPath = @”fullpath”; public MainWindow() { InitializeComponent(); StoredTb.Text = folderPath; String[] files = Directory.GetFiles(folderPath); foreach (string file in files) myDropDown.Items.Add(Path.GetFileNameWithoutExtension(file)); […]

C#:将外部控制台程序作为隐藏运行

任何人都可以告诉我如何从Winforms应用程序生成另一个控制台应用程序,但(A)不显示屏幕上的控制台窗口,(B)仍然获得应用程序的标准输出? 目前我有以下内容: Process SomeProgram = new Process(); SomeProgram.StartInfo.FileName = @”c:\foo.exe”; SomeProgram.StartInfo.Arguments = “bar”; SomeProgram.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; SomeProgram.StartInfo.UseShellExecute = false; SomeProgram.StartInfo.RedirectStandardOutput = true; SomeProgram.Start(); SomeProgram.WaitForExit(); string SomeProgramOutput = SomeProgram.StandardOutput.ReadToEnd(); 如果我将RedirectStandardOutput设置为false,则控制台应用程序将按预期隐藏,但我无法获得标准输出文本。 但是,只要我将RedirectStandardOutput设置为true,窗口就会停止隐藏,尽管我能够获得程序的输出。 所以,我知道如何让控制台应用程序运行隐藏,我知道如何获得程序的输出,但我如何让它同时执行? 许多TIA

Process.Start()从命令提示符窗口获取错误

我正在尝试使用args 启动命令promt进程 。 现在我想获取有关错误的信息(如果存在)。 someProcess = System.Diagnostics.Process.Start(cmd, someArgs); 最好的问候,洛维吉

Process.WaitForExit在不同的机器上不一致

此代码在大量计算机上按预期运行。 但是在一台特定的机器上,对WaitForExit()的调用似乎被忽略了,实际上将该进程标记为已退出。 static void Main(string[] args) { Process proc = Process.Start(“notepad.exe”); Console.WriteLine(proc.HasExited); //Always False proc.WaitForExit(); //Blocks on all but one machines Console.WriteLine(proc.HasExited); //**See comment below Console.ReadLine(); } 请注意,与SO上的类似问题不同,被调用的进程是notepad.exe (出于测试原因),因此不太可能出现错误 – 即它不会产生第二个子进程并关闭。 即便如此,它也无法解释为什么它适用于所有其他机器。 在问题机器上,第二次调用Console.WriteLine(proc.HasExited))返回true即使在屏幕和任务管理器中记事本仍然清晰打开。 该机器运行的是Windows 7和.NET 4.0。 我的问题是; 该特定机器上的条件可能导致这种情况? 我应该检查什么? 编辑 – 到目前为止我尝试过的事情/更新/可能相关的信息: 重新安装.NET。 关闭任务管理器中我不知道的任何进程。 Windows尚未在此计算机上激活。 根据评论中的建议,我尝试使用GetProcessesByName获取“现有”进程ID,但这只是在问题机器上返回一个空数组。 因此,很难说即使使用WaitForExit也存在问题,因为即使在调用WaitForExit之前调用GetProcessesByName也不会返回该进程。 在问题机器上,生成的记事本进程的ParentID是代码手动启动的记事本进程的ID,换句话说,记事本正在生成子进程并终止自身。