草庐IT

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

我想显示我的多线程应用程序(在多核处理器上工作)的CPU使用情况。我想收到接近任务管理器的号码。但我得到的数字超过100%。甚至超过500%。是的,我知道,对于类别"Process"的计数器"%ProcessorTime"我需要划分为Environment.ProcessorCount或“NumberOfLogicalProcessors”(与我的配置相同)。而500%是此操作之后的结果。我在具有不同硬件(i7、i5、Core2)和软件配置(具有所有更新的Windows7SP1、具有所有更新的Windows2008R2SP1)的不同计算机上测试了这个示例,但遇到了同样的问题。publi

c# - 重定向控制台应用程序的标准输入

我有一个控制台应用程序,我试图通过重定向流程的标准输入流来实现自动化。在打开应用程序后的手动模式下,它等待用户输入,如下所示,我用重定向的标准输入流创建了进程。代码片段如下,ProcessnewProcess=newProcess();newProcess.StartInfo.FileName=exeName;newProcess.StartInfo.Arguments=argsLine;newProcess.StartInfo.UseShellExecute=false;newProcess.StartInfo.RedirectStandardOutput=false;newProc

c# - 将子进程的输出(stdout、stderr)重定向到 Visual Studio 中的输出窗口

目前我正在从我的C#程序中启动一个批处理文件:System.Diagnostics.Process.Start(@"DoSomeStuff.bat");我希望能够做的是将该子进程的输出(stdout和stderr)重定向到VisualStudio(特别是VisualC#Express2008)中的输出窗口。有办法吗?(另外:这样它就不会全部缓冲起来,然后在子进程完成时吐出到输出窗口。)(顺便说一句:目前我可以让parent进程的标准输出(但不是标准错误)出现在输出窗口中,方法是将我的程序设为“Windows应用程序”而不是“控制台”应用程序”。如果程序在VisualStudio之外运行

C#:以隐藏方式运行外部控制台程序

谁能告诉我如何从Winforms应用程序生成另一个控制台应用程序,但(A)不在屏幕上显示控制台窗口,并且(B)仍然获得应用程序的标准输出?目前我有类似以下内容:ProcessSomeProgram=newProcess();SomeProgram.StartInfo.FileName=@"c:\foo.exe";SomeProgram.StartInfo.Arguments="bar";SomeProgram.StartInfo.WindowStyle=ProcessWindowStyle.Hidden;SomeProgram.StartInfo.UseShellExecute=fal

c# - 从命令行打开 Chrome 并等待它关闭

我正在使用以下代码遍历浏览器可执行路径列表并启动它们中的每一个:foreach(varbrowserinbrowsers){varproc=newProcess();proc.StartInfo.FileName=browser.ExecutablePath;proc.StartInfo.Arguments="http://google.com";proc.Start();proc.WaitForExit();Console.WriteLine(proc.ExitCode.ToString());proc.Close();}应该做的是:它应该打开加载了google.com的浏览器窗口并

c# - 如何从 C# 关闭另一个进程

这个问题在这里已经有了答案:ControlanotherapplicationusingC#(6个答案)关闭1年前。我需要从C#应用程序关闭另一个进程(WindowsMediaEncoder),到目前为止我可以通过以下方式完成:Process.GetProcessesByName("wmenc.exe")[0].CloseMainWindow();但是如果MediaEncoder应用程序正在流式传输或录制,它会在退出时显示一个对话框:"Areyousureyouwanttostopencoding?"那么有没有办法从代码中回答或单击"is"按钮?[编辑]许多用户使用Process.ki

c# - Process.WaitForExit 跨机器不一致

此代码在大量机器上按预期运行。然而在一台特定的机器上,调用WaitForExit()似乎被忽略,实际上将进程标记为已退出。staticvoidMain(string[]args){Processproc=Process.Start("notepad.exe");Console.WriteLine(proc.HasExited);//AlwaysFalseproc.WaitForExit();//BlocksonallbutonemachinesConsole.WriteLine(proc.HasExited);//**SeecommentbelowConsole.ReadLine();

c# - 为什么 Process.Start ("cmd.exe", process);不行?

这个有效:Process.Start("control","/nameMicrosoft.DevicesAndPrinters");但这不会:(它只是打开一个命令提示符。)ProcessStartInfoinfo=newProcessStartInfo("cmd.exe");info.Arguments="control/nameMicrosoft.DevicesAndPrinters";Process.Start(info);为什么?(是的,我知道它们并不相同。但第二个“应该”有效。) 最佳答案 这是因为cmd.exe需要/K开关

c# - 在不窃取焦点的情况下启动进程 (C#)

我需要能够在不窃取焦点的情况下启动进程(控制台和窗口)。我发现在.NET框架内执行此操作的唯一方法是Microsoft.VisualBasic.Interaction.Shell和Microsoft.VisualBasic.AppWinStyle.[Minimized|Normal]NoFocus(映射到SW_SHOWMINNOACTIVE/SW_SHOWMA并传递给ShellExecute)。在我的代码的当前版本中(确实窃取了焦点),我正在使用System.Diagnostics.Process,并依赖于提供给我的一些功能,而Interaction.Shell方法没有。2个问题(一个

c# - 我如何聚焦外国窗口?

我有一个应用程序,它一次只能打开一个自身实例。为了强制执行此操作,我使用以下代码:System.Diagnostics.Process[]myProcesses=System.Diagnostics.Process.GetProcesses();System.Diagnostics.Processme=System.Diagnostics.Process.GetCurrentProcess();foreach(System.Diagnostics.ProcesspinmyProcesses){if(p.ProcessName==me.ProcessName)if(p.Id!=me.Id