Tag: 进程

在C#.NET中启动和停止进程

我正在尝试编写一个简单的程序,它有两个方法,一个启动一个进程,一个启动同一个进程。 如: public Process StartProc(string procname) { Process proc = new Process(); proc.StartInfo.FileName = procname; proc.Start(); return proc; } public void StopProc(Process proc) { proc.Close(); } 有可能这样做吗?

从Process.TotalProcessorTime计算进程cpu使用情况

我一直试图摆脱使用PerformanceCounter类来监视进程的CPU使用情况,因为当进程计数变得非常高时(监视大量进程时)它似乎需要相当数量的CPU。 我的第一种方法是使用Win32_PerfFormattedData_PerfOS_Processor类和PercentProcessorTime属性来获取WMI路由,但是在尝试计算多个核心的CPU使用率时似乎存在问题(它返回的最大值是100%,因此无法根据它进行划分关于CPU核心数,导致结果不准确)。 所以最后我决定使用Process的类TotalProcessorTime属性。 遗憾的是,我不确定如何根据该值计算Process使用的总CPU使用百分比。 我知道我应该从之前的PercentProcessorTime值中减去当前的PercentProcessorTime值,以获得处理器在特定时间限制内花费了多少时间,但我不确定如何从那里继续。 提前致谢。

使用Process实时控制台输出重定向

我正在使用VBOXMANAGE来“导出”客户机。 VBOXManage是一个控制台应用程序,可以控制来宾主机的来宾行为。 由于export命令是一个很长的进程,它返回进程更新,如下所示: 0%… 10%… 20%… 30%… 100% 我正在编写一个C#应用程序,它将使用Process调用VBOXManage。 这是我的代码: Process VBOXProc = new Process(); VBOXProc.StartInfo.FileName = VBOXMANAGE; VBOXProc.StartInfo.Arguments = Arguments; VBOXProc.StartInfo.UseShellExecute = false; VBOXProc.StartInfo.CreateNoWindow = true; VBOXProc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; VBOXProc.StartInfo.RedirectStandardError = true; VBOXProc.StartInfo.RedirectStandardOutput = true; VBOXProc.OutputDataReceived += new DataReceivedEventHandler(VBOXProc_OutputDataReceived); VBOXProc.ErrorDataReceived += new DataReceivedEventHandler(VBOXProc_ErrorDataReceived); VBOXProc.EnableRaisingEvents = true; VBOXProc.Start(); VBOXProc.BeginOutputReadLine(); VBOXProc.BeginErrorReadLine(); VBOXProc.WaitForExit(); 这很好,除了每个LINE读取输出。 这意味着过程更新“0%… 10%… 20%… […]

C#中Process和ProcessStartInfo有什么区别?

Process和ProcessStartInfo什么区别? 我已经用它们来启动外部程序,但必须有两种方法可以做到这一点。 这是两个例子。 Process notePad = new Process(); notePad.StartInfo.FileName = “notepad.exe”; notePad.StartInfo.Arguments = “ProcessStart.cs”; notePad.Start(); 和 ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = “notepad.exe”; startInfo.Arguments = “ProcessStart.cs”; Process.Start(startInfo);

找出Windows服务的运行进程名称.NET 1.1

我们正在使用一个写得很糟糕的Windows服务,当我们尝试从代码中阻止它时,它将挂起。 因此,我们需要找到与该服务相关的进程并将其终止。 有什么建议?

C# – 启动Invisible Process(CreateNoWindow和WindowStyle不工作?)

我有两个程序(.exe),我在.NET中创建。 我们称他们为师父和工人。 大师启动1个或更多工人。 Worker 不会与用户交互,但它是一个WinForms应用程序,它接收命令并根据从Master接收的命令运行WinForms组件。 我希望Worker应用程序完全隐藏运行 (当然,除了显示在任务管理器中)。 我认为我可以使用StartInfo.CreateNoWindow和StartInfo.WindowStyle属性完成此操作 ,但我仍然在表单中看到Client.exe窗口和组件。 但是,它不会显示在任务栏中。 Process process = new Process { EnableRaisingEvents = true, StartInfo = { CreateNoWindow = true, WindowStyle = ProcessWindowStyle.Hidden FileName = “Client.exe”, UseShellExecute = false, ErrorDialog = false, } }; 我需要做什么才能让Client.exe运行但不显示?

性能计数器当前进程的CPU使用率超过100

我想显示我的multithreading应用程序的CPU使用率(在多核处理器上工作)。 我想收到任务经理附近的数字。 但我得到的数字超过100%。 甚至超过500%。 是的,我知道,对于类别“进程”的计数器“%Processor Time”我需要分为Environment.ProcessorCount或“NumberOfLogicalProcessors” (我的配置相同)。 此操作后结果为500%。 我在具有不同硬件(i7,i5,Core2)和软件配置(带有所有更新的Windows 7 SP1,带有所有更新的Windows 2008 R2 SP1)的不同计算机上测试了此示例,并遇到了同样的问题。 public static class SystemInfo { private static Process _thisProc; private static bool HasData = false; private static PerformanceCounter _processTimeCounter; private static void Init() { if (HasData) return; if (CheckForPerformanceCounterCategoryExist(“Process”)) { _processTimeCounter = new PerformanceCounter(); _processTimeCounter.CategoryName = “Process”; _processTimeCounter.CounterName = “% Processor […]

C#获取有关当前活动窗口的信息

我有一个应用程序,我想在后台运行。 我想获取可执行文件名,例如IExplorer.exe。 我玩过以下代码: [DllImport(“user32.dll”)] private static extern IntPtr GetForegroundWindow(); [DllImport(“user32.dll”)] private static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count); public static void Main() { int chars = 256; StringBuilder buff = new StringBuilder(chars); while (true) { // Obtain the handle of the active window. IntPtr handle = GetForegroundWindow(); // Update the controls. if (GetWindowText(handle, […]

无法将命令发送到cmd.exe进程

我正在尝试使用StandardInput.WriteLine(str)将命令发送到打开的cmd.exe进程,但是似乎没有发送任何命令。 首先,我使用全局变量p( Process p )打开一个过程。 p = new Process() { StartInfo = { CreateNoWindow = true, UseShellExecute = false, RedirectStandardError = true, RedirectStandardInput = true, RedirectStandardOutput = true, FileName = @”cmd.exe”, Arguments = “/C” //blank arguments } }; p.Start(); p.WaitForExit(); 之后,我尝试使用一种简单的方法发送命令,该方法将结果记录在文本框中。 private void runcmd(string command) { p.StandardInput.WriteLine(command); var output = p.StandardOutput.ReadToEnd(); TextBox1.Text = output; } […]

如何检查进程是否空闲? C#

正如标题所说。 我正在寻找一种方法来检查一个进程是否处于空闲状态,有明显的运行并且没有运行但是如何确定它是否没有做任何事情? 谢谢