【问题标题】:How do I execute WinZip from Visual Studio without it's GUI opening?如何在不打开 GUI 的情况下从 Visual Studio 执行 WinZip?
【发布时间】:2010-07-21 17:11:34
【问题描述】:
int sysReturn = system("\"C:\\Program Files\\WinZip\\winzip32\" -a C:\\LOG\\test.zip C:\\LOG\\LOG_7-20-2010_17_8_48_834.csv");  

似乎一切正常 - 因为它创建了 test.zip
但是,它会打开 WinZip GUI(在我的程序运行时显示压缩了多少等。)

如何跳过在用户看到的窗口中没有打开任何内容的部分?我希望它被“隐藏”,所以在我的程序运行后,你看到的只是压缩文件。

WinZip命令行参数参考:
http://www.memecode.com/docs/winzip.html

【问题讨论】:

  • ,不。如果您的用户没有 WinZip 怎么办?如果计算机是 64 位的怎么办?如果没有C: 驱动器怎么办? (就像我的三台机器)
  • 这是在一个受控系统上进行的,我确切地知道 WinZip 在哪里,等等。不适合一般用途。
  • 我认识一些人,但我不能引入任何开源压缩库......
  • 听起来他正在开发一个应用程序供公司“内部”使用。一些公司不会允许开源,因为担心它会“污染”他们的东西。就像大多数大公司仍在使用 IE6 和 WinXP SP2
  • @Caladin,即便如此,如果您有这种心态,您仍然可以正确编写自己的库,而不会遇到可执行文件。

标签: c++ windows winapi command-line


【解决方案1】:

我同意其他人关于使用不同实用程序的回答。但是,要回答您的问题:您发布的链接还提到了另一个选项 -min 以最小化运行 WinZip。你试过吗?另外,不要使用system,而是尝试使用ShellExecute 并要求隐藏窗口:

ShellExecute(NULL, NULL, "C:\\Program Files\\WinZip\\winzip32", "-a C:\\LOG\\test.zip C:\\LOG\\LOG_7-20-2010_17_8_48_834.csv", NULL, SW_HIDE);

【讨论】:

  • 有没有办法隐藏确认框而不勾选“不再显示”?这确实隐藏了 WinZip GUI,但没有隐藏使用 OK 按钮显示压缩统计信息的确认框。
  • 恐怕这是不可能的,除非有一个命令行选项可以禁用它。
【解决方案2】:

您的代码非常错误。

要创建 .zip 文件,您应该使用 C++ 中的原生 .zip 库。

这里有一些免费的:

【讨论】:

    【解决方案3】:

    停止使用 c++ 代码中的 winzip 可执行文件并改用库如何? 为了让您的代码有希望在不同的系统上工作,您不能依赖第三方可执行文件。

    看看这个: portable zip library for C/C++ (not an application)

    【讨论】:

      【解决方案4】:

      【讨论】:

      【解决方案5】:

      你能用7-zip吗?它是免费的(LGPL 许可),无需创建窗口即可从命令行运行。

      【讨论】:

        【解决方案6】:

        尝试改用 execlp。我不得不这样做的几次,我在 System 上的运气更好。

        execlp("explorer", "/n, /select,c:\\foo.txt", 0)
        

        有关详细示例,请参阅此 MSDN 页面: http://msdn.microsoft.com/en-us/library/431x4c1w.aspx

        【讨论】:

          猜你喜欢
          • 2018-06-05
          • 1970-01-01
          • 1970-01-01
          • 2011-01-17
          • 2013-03-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多