【问题标题】:Executing command prompt's functionality using Win32使用 Win32 执行命令提示符的功能
【发布时间】:2009-03-29 14:46:39
【问题描述】:

哪些 Windows API 函数可用于执行命令提示符的功能?例如,我喜欢执行 dir 命令,想在 GUI 中显示输出,而不是在 Windows 中使用 cmd.exe。

【问题讨论】:

    标签: c++ c winapi


    【解决方案1】:

    您可以从您的流程中启动cmd /c dir S:\ome\Path 并获取输出。否则是不可能的。但是,如果您对 dir 的特定格式细节不感兴趣,那么您最好枚举文件/目录并显示它们。

    【讨论】:

    • 那应该是cmd /k dir,否则cmd完成dir命令后不会退出。
    • 恰恰相反。 /k 仍然存在, /c 没有。看看cmd /?
    【解决方案2】:

    dir 命令内置在 cmd.exe 中,它不是单独的可执行文件。不运行 cmd.exe 是没有办法执行的。

    编辑:至于结果的显示,您需要填写 STARTUPINFO.hStdXXX 成员,可能使用匿名管道。见this example

    【讨论】:

      【解决方案3】:

      对于控制台应用程序,您可以使用 popen(),但对于 GUI 应用程序而言,事情绝非如此简单。请参阅http://msdn.microsoft.com/en-us/library/ms682499%28VS.85%29.aspx 了解一种方法。

      【讨论】:

        【解决方案4】:

        如果您想要给定文件夹中的文件列表,请参阅question,它描述了如何使用 windows api 或更通用的 boost 方法来实现它。

        【讨论】:

          【解决方案5】:

          Windows 命令行所做的一切都是通过 Win32 API 完成的。

          例如,关于“dir”,FindFirstFile() 和 FindNextFile() 会给出一个目录的内容。

          对于任何给定的命令,您都需要弄清楚正在使用哪些 API/函数调用,然后自己学习如何在自己的代码中使用它们。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-09-18
            • 2013-07-31
            • 2014-06-02
            • 1970-01-01
            • 1970-01-01
            • 2011-10-26
            相关资源
            最近更新 更多