从Windows控制台启动一个gui程序,然后让它"自行分离"

rob*_*oft 1 delphi console batch-file

我正在尝试修改一个传统的Delphi 5应用程序,以便可以从它的图标/通过资源管理器或从控制台(命令行)启动它.当它从控制台启动时,我希望程序从控制台进程中分离出来,这样控制台就可以继续执行其他指令而无需等待我的程序终止.

我想在'批处理'文件中使用它,这样我可能会;

@echo off
rem step 1 - do some stuff here
rem
rem step 2 - launch my app
c:\myfolder\myapp
rem
rem step 3 - do some more stuff here

并且在步骤2中启动我的应用程序后,控制台进程将继续执行到第3步.

很多年前,我确信我已经做过这件事,但我对我究竟做了什么感到困惑.我不想为我的主Windows应用程序编写一个小的控制台应用程序'启动器' - 我95%确定在'普通'Delphi GUI应用程序中有这样做的方法.

我想我可以使用vbscript或powershell或某些东西用某种'nowait'参数'执行'我的程序但是客户端熟悉批处理文件,我真的不想通过建议他改变他的脚本来打乱applecart安装额外的东西 - 无论如何我正在对可执行文件进行更改,为他勾选这个框也很棒.

任何人?:-)

pax*_*blo 14

我认为START命令是你正在寻找的命令.它开始一个独立于控制台的过程,它是一部分,cmd.exe因此不需要额外的软件.

但我认为GUI应用程序无论如何都这样做了.也许Delphi与MSVC不同.

打开一个控制台并输入"start /?".

作为itowlson评论中的状态,GUI应用程序通常会自行分离.它是真正的cmd.exeshell做诡计,因为它等待它完成,如果它从cmd文件运行.

因此,"notepad"从提示符将在后台启动它,但"notepad"在cmd文件中将等待.在cmd文件中,您需要使用:

start notepad.exe
Run Code Online (Sandbox Code Playgroud)

或者你的应用程序被叫什么(不是记事本,大概是).

  • GUI应用程序无论如何都会这样做*如果你从控制台*启动它们.但是,如果从批处理文件启动GUI应用程序,批处理文件将等待GUI应用程序终止.例如,尝试创建一个只启动记事本的批处理文件.这是一个批处理文件与交互式的东西,而不是Delphi与MSVC.是的,这有点不直观*咧嘴笑*. (5认同)

Sha*_*men 5

尝试:启动""c:\ myfolder\myapp(带空引号)

  • 如果必须引用可执行文件路径,则需要空引号(或其中的标题).否则,您的路径将被视为标题. (4认同)