进程在Windows上启动奇怪的行为

时间:2017-02-19 16:02:28

标签: c# c#-4.0

问题如下:

我正在使用7-zip压缩日志文件。 作为压力测试,我已经将最大日志文件设置为4k~并且我已经完成了使用消息轰炸记录器的任务。 由于压缩函数每秒运行几次,因此会发生类似刷新的奇怪行为。 如果我点击/右键单击某个窗口中的某个菜单,它会让我失去兴趣并在视觉工作室内部尝试搜索某些内容,它会在输入中选择我的搜索文本并最终覆盖自己以及更多...

实际上这不会正常发生,但如果可能的话,仍然希望保护应用程序。

我的压缩函数尝试目前是这样的:

private void CompressFile(string sourceName, string extension)
    {
        string targetName = sourceName.Replace(extension, ".zip");

        ProcessStartInfo processInfo = new ProcessStartInfo();
        processInfo.FileName = @"C:\Program Files\7-Zip\7zG.exe";
        processInfo.Arguments = "a -tgzip \"" + targetName + "\" \"" + sourceName + "\" -mx=9";

        processInfo.CreateNoWindow = true;
        processInfo.ErrorDialogParentHandle = IntPtr.Zero;
        processInfo.WindowStyle = ProcessWindowStyle.Hidden;
        processInfo.UseShellExecute = false;
        processInfo.RedirectStandardInput = true;
        processInfo.RedirectStandardOutput = false;

        Process presses = Process.Start(processInfo);
        presses.WaitForExit();
    }

我尝试过更改一些processInfo属性但到目前为止没有太大成功。

提前感谢您对此事的任何帮助/见解 罗伊。

1 个答案:

答案 0 :(得分:1)

在测试了各种选项并在线阅读后,我得到了答案。 因为可执行文件7zG.exe是7-zip的图形exe,即使我设置了processInfo.WindowStyle = ProcessWindowStyle.Hidden; 该过程打开窗口并快速隐藏它,这导致了奇怪的行为。 一旦我将FileName更改为7z.exe,就会停止发生。

该功能的最终版本:

 private void CompressFile(string sourceName, string extension)
    {
        string targetName = sourceName.Replace(extension, ".zip");

        ProcessStartInfo processInfo = new ProcessStartInfo();
        processInfo.FileName = @"C:\Program Files\7-Zip\7z.exe";
        processInfo.Arguments = "a -tgzip \"" + targetName + "\" \"" + sourceName + "\" -mx=9";

        processInfo.WindowStyle = ProcessWindowStyle.Hidden;

        Process presses = Process.Start(processInfo);
        presses.WaitForExit();
    }