Tag: process

尝试在命令提示符下运行相同的命令不起作用

我正在制作一个程序,在文件夹中搜索安全的PDF并使用ImageMagick将它们转换为PNG文件。 以下是我的代码。 string WorkDir = @”C:\Users\rwong\Desktop\TestFiles”; Directory.SetCurrentDirectory(WorkDir); String[] SubWorkDir = Directory.GetDirectories(WorkDir); foreach (string subdir in SubWorkDir) { string[] filelist = Directory.GetFiles(subdir); for(int f = 0; f < filelist.Length; f++) { if (filelist[f].ToLower().EndsWith(".pdf") || filelist[f].EndsWith(".PDF")) { PDFReader reader = new Pdfreader(filelist[f]); bool PDFCheck = reader.IsOpenedWithFullPermissions; reader.CLose(); if(PDFCheck) { //do nothing } else { string PNGPath = […]

从.NET执行Cygwin进程?

我正在尝试从.NET应用程序启动Cygwin版本的ruby.exe,但我被卡住了。 c:\>”c:\cygwin\bin\ruby.exe” c:\test\ruby.rb /usr/bin/ruby: no such file to load — ubygems (LoadError) 如你所见,Ruby无法找到库,因为它正在寻找一些Linux风格的路径。 显然,当我从.NET运行ruby.exe时,由于找不到库,它就像上面那样失败了。 如果我没有加载任何库它可以正常工作: c:\>”c:\cygwin\bin\ruby.exe” -v ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-cygwin] 最初cygwin从这个cygwin.bat开始 chdir C:\cygwin\bin bash –login -i 我怎样才能让.NET首先进入cygwin环境然后在那个环境中执行ruby? 我不能使用Windows Ruby,我需要cygwin ruby​​。 我知道交互式驱动“bash”的潜在用法但听起来很脏,除非有很好的方法。

FileMode和FileAccess和IOException:进程无法访问文件’filename’,因为它正由另一个进程使用

我有一个应用程序A,它生成一个用于跟踪的文本文件。 同时,应用程序B需要读取相同的文本文件并附加到邮件消息中。 但是当应用程序B尝试读取文本文件时,我收到以下错误: IOException:进程无法访问文件’filename’,因为它正由另一个进程使用 有什么建议 ? 也许更好地用于FileMode和FileAccess? 申请A. if (File.Exists(nFile2)) File.Delete(nFile2); traceFile2 = File.Open(nFile2, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); if (traceFile2 != null) { var twt2 = new TextWriterTraceListener(traceFile2); // http://www.helixoft.com/blog/archives/20 try { if (twt2.Writer is StreamWriter) { (twt2.Writer as StreamWriter).AutoFlush = true; } } catch { } var indiceTraceFile2 = Trace.Listeners.Add(twt2); System.Diagnostics.Trace.WriteLine(“INICIO: ” + DateTime.Now.ToString()); 申请B. […]

C#检测产生的进程

我正在编写一段c#代码,用于启动安装程序并在继续使用其他内容之前等待它返回。 我遇到某些安装程序出现问题,这些安装程序在安装实际完成之前返回原始进程的其他进程。 有什么方法可以等到所有流程完成后? 为了澄清这里我遇到麻烦的情况: 启动Installer1 Installer1生成/启动另一个安装程序(Installer2) 安装程序1返回 应用程序认为安装已完成但Installer2仍在运行。 这会导致应用程序中的工作流问题。 这是我目前正在使用的代码: // launch installer Process process = windowsApplicationLauncher.LaunchApplication(_localFilePath); // wait for process to return do { if (!process.HasExited) { } } while (!process.WaitForExit(1000)); if (process.ExitCode == 0) { _fileService.MoveFile(_localFilePath, _postInstallFilePath); _notification.SetComplete(false); return true; } return false;

使用C#和ffmpeg将wma流转换为mp3流

是否可以实时将wma流转换为mp3流? 我尝试过做这样的事但没有运气: WebRequest request = WebRequest.Create(wmaUrl); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); int block = 32768; byte[] buffer = new byte[block]; Process p = new Process(); p.StartInfo.UseShellExecute = false; p.StartInfo.ErrorDialog = false; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardError = true; p.StartInfo.FileName = “c:\\ffmpeg.exe”; p.StartInfo.Arguments = “-i – -y -vn -acodec libspeex -ac 1 -ar 16000 -f […]

你如何从代码中调用exe并绕过可能的UAC行动呢?

我正在使用system.diagnostics.process以安静模式启动msi文件。 我得到退出代码1625,我怀疑它是因为UAC阻止它运行。 我已经关闭了UAC提示但没有骰子…… 如何确保我正确提升msiexec的权限以使其实际运行? 谢谢, 艾萨克

加载项在启动最小化时使Excel崩溃

我使用Process.Start(…)在我的C#WinForms应用程序中启动Excel(这有一个原因)。 我想在后台启动它,而不会分散用户的注意力,因此我尝试将其启动最小化或隐藏。 在这两种情况下,我都会遇到一种非常奇怪的行为: 几秒钟后, Excel恢复窗口(如果它被隐藏,甚至会显示它)然后崩溃说:“Microsoft Office Excel遇到问题,需要关闭。(Win XP崩溃消息。)” 如果我通过双击桌面上的快捷方式图标手动启动Excel,然后立即切换到另一个应用程序窗口,以便Excel窗口在启动期间失去焦点,则会发生同样的情况。 仅当任何XLA加载项包含UserForm时,才会出现此问题。 如果我删除UserForm,问题就会消失。 如果我删除加载项,问题就会消失。 任何帮助都表示赞赏,只要它是 解释为什么会发生这种情况 我可以在加载项中更改的内容 一种解决这个bug的方法(不使用COM) 不建议使用COM。 ( 见这里了解我为什么不这样做 。) 不是更新Excel的建议(我不能) 重现步骤: 使用空工作簿启动Excel 2007。 另存为… 文件类型:Excel 2003加载项(* .xla) 位置:%APPDATA%\ Microsoft \ Excel \ XLSTART \ foobar.xla Alt + F11(打开VBA编辑器) 将UserForm添加到项目中。 保存并退出Excel 启动Excel,然后立即单击Firefox或任务栏中的任何选项卡以激活Excel以外的任何窗口。 等等,然后看Excel启动,直到它崩溃。 重启Excel后,它说: Excel经历了’foobar’加载项的严重问题。 如果您多次看到此消息,则应禁用此加载项并检查是否有可用的更新。 要禁用此加载项吗? 详细信息/调查结果: Excel版本:12.0.6535.5002,SP2 MSO 12.0.6425.1000 0xA3在他的评论中报道他可以在32位机器上用Excel 12.0.6535.5002,SP2 MSO 12.0.6535.5002重现它 […]

来自C#应用程序的ffmpeg使用Process类 – 用户提示符未显示在standardError中

我正在编写一个使用c#运行ffmpeg的应用程序。 我的程序将standardError输出重定向到流,以便可以解析它以获取进度信息。 在测试期间,我发现了一个问题: 如果输出显示在命令窗口而不是被重定向,则ffmpeg将显示它的正常标题,后跟“file c:\ temp \ testfile.mpg已经存在.overrite [y]” 。 如果我单击命令窗口并按y,程序将继续对文件进行编码。 如果将StandardError重定向到我的处理程序然后打印到控制台,我会看到现在打印到控制台的命令窗口中显示的相同标题信息。 除了文件……已存在提示 。 如果我在命令窗口中单击并按y,程序将继续处理该文件。 当提示操作员提供信息时,是否存在除standardOutput或standardError之外的流,或者我是否遗漏了其他内容? public void EncodeVideoWithProgress(string filename, string arguments, BackgroundWorker worker, DoWorkEventArgs e) { Process proc = new Process(); proc.StartInfo.FileName = “ffmpeg”; proc.StartInfo.Arguments = “-i ” + ” \”” + filename + “\” ” + arguments; proc.StartInfo.UseShellExecute = false; proc.EnableRaisingEvents = true; […]

什么是运行时主机?

运行时主机的确切定义是什么? 来自MSDN : 公共语言运行库旨在支持各种不同类型的应用程序,从Web服务器应用程序到具有传统丰富Windows用户界面的应用程序。 每种类型的应用程序都需要运行时主机来启动它。 运行时主机将运行时加载到进程中,在进程内创建应用程序域,并将用户代码加载到应用程序域中。 那么它是一个将运行时加载到另一个进程的进程吗? 如何在任务管理器中检查它?

System.Diaganostics.Process.Id不是任务管理器中显示的相同进程ID。 为什么?

我正在使用C#的System.Diagnostic.Process对象。 它的一个属性是Id 。 此生成的Id与Windows Task Manager显示的PID 。 为什么是这样? 一旦这个过程开始,你会看到。 它启动了另外两个非托管进程,我无法通过对象属性引用显式获取ID。 我必须搜索所有进程,通过System.Diagnostics.Process.GetProcesses()按进程名称查找它们。 我正在尝试通过PID找到一种可靠的方法来终止此进程和所有关联的进程,这是在Task Manager中显示的进程。 有没有更好的办法? 我不能用关联的进程名称杀死所有进程,因为这可能会杀死那些与我的程序无关的进程的其他实例。