【发布时间】:2015-11-15 03:33:57
【问题描述】:
我正在为自己编写一个 GUI 实用程序,用于在 CMD 窗口中导航文件夹, 而是采用旧的 DOS 诺顿更改目录实用程序的风格。
运行时,应用会弹出一个文件夹树,允许用户选择一个文件夹 导航,然后关闭并返回到 CMD 提示符。目前,它的方式 工作原理是它作为“主”批处理文件中的第一个命令运行。它写了一个辅助批次 文件,在我的应用程序文件夹中的 AppData 下,包含更改驱动器和 目录到用户选择的文件夹,然后主批处理文件调用此 使用 CALL 的第二个批处理文件。
它工作正常,但这种方式实际上改变了 CMD 窗口的当前目录 从需要从批处理文件运行的角度来看,这让我觉得很不优雅 (以便在我的应用程序关闭后可以对用户的选择进行操作)和 需要辅助批处理文件来进行实际导航。
所以,我的问题是,我的应用如何将指令发送到 CMD 实例 拥有应用程序运行到用户选择的文件夹的窗口?我试过做一个 ShellExecute “CMD /K ...”,但尽管确实导航到 选定的文件夹,它会在一个新的 CMD 窗口中执行此操作,而不是在我的应用程序中运行的那个。 我的概念差距是如何让当前的 CMD 执行我的应用程序的指令 在我的应用程序终止之后。
Fwiw,我想尝试将用户的文件夹选择写入 CMD 窗口环境中的环境变量,以便 CMD 处理器 从那里采取行动,但这似乎需要通过“以管理员身份运行”打开 CMD 窗口,这是我绝对不想要的。
【问题讨论】:
-
我无法理解您所说的“如何让当前的 CMD 在我的应用程序终止后 执行我的应用程序的指令”。它应该如何行动?
-
当您的应用关闭时,为什么不简单地输出到 cmd
WriteLn(Format('cd "%s"', [the_selected_directory]))? ` -
好吧,如果我尝试从我的应用程序中更改当前目录,在我的应用程序终止后它似乎对 CMD 窗口的当前目录没有影响 - 就好像“当前目录" 在 CMD 窗口中恢复到我的应用程序运行之前的状态。所以在我看来,我需要获取“托管”窗口以更改目录的 CMD 实例
-
“为什么不简单地输出到 cmd”,因为无论在应用程序运行的 CMD 窗口中还是在其上,这都没有影响。
-
@MartynA 您是打开控制台窗口的程序还是通过特定命令从控制台窗口中启动的?
标签: windows delphi cmd delphi-7