2009-04-21 82 views
1

我試圖修改一箇舊的Delphi 5應用程序,以便它可以從它的圖標/通過資源管理器啓動,或從控制檯(命令行啓動)線)。當它從控制檯啓動時,我希望程序脫離控制檯進程,以便控制檯可以繼續執行其他指令而無需等待我的程序終止。從Windows控制檯啓動一個GUI程序,然後使其「脫離」本身

我想在'批處理'文件中使用它,這樣我可能會有;

 
@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改變他的腳本或安裝額外的東西 - 我正在對可執行文件進行更改,並且爲他打勾也是非常棒的。

有人嗎? :-)

回答

14

我認爲START命令是你正在尋找的。它分別啓動一個進程到控制檯,它是cmd.exe的一部分,因此不需要額外的軟件。

但我認爲GUI應用程序無論如何都這麼做。也許Delphi與MSVC不同。

打開控制檯並鍵入"start /?"

由於itowlson在註釋中聲明,GUI應用程序通常會自行脫離。這是真正的cmd.exe外殼做的詭計,它等待它完成,如果它從一個cmd文件運行。

所以"notepad"從提示符開始它會在後臺,但"notepad" cmd文件將等待。在cmd文件中,您需要使用:

start notepad.exe 

或任何您的應用程序被稱爲(不記事本,大概)。

+5

GUI應用程序做到這一點無論如何*如果你從控制檯啓動它們*。但是,如果從批處理文件啓動GUI應用程序,批處理文件將等待GUI應用程序終止。例如。嘗試創建一個只啓動記事本的批處理文件。這是一個批處理文件與交互式的東西,而不是Delphi與MSVC。是的,這有點不直觀*微笑*。 – itowlson 2009-04-21 07:40:20

+0

我沒有意識到這是cmd.exe欺騙,謝謝itowlson。在將自己的工作虛擬機自動化到家中以自動啓動VPN,Notes,防火牆等之前,我遇到了麻煩。下次我會更清楚。將你的意見納入答案。 – paxdiablo 2009-04-21 07:59:43

+0

謝謝你們 - 很好的答案,非常有幫助。 – robsoft 2009-04-21 08:46:10

5

嘗試:開始 「」 C:\ MyFolder文件\ MYAPP(與空引號)

2

我認爲微軟已經在Windows電源外殼解決這個問題。 在命令提示符下,即使您使用「start」,也不能從cmd中分離您的進程。如果你關閉了cmd,你會突然死亡。但是在Windows Power Shell中,您可以將程序或命令從Power Shell分離爲默認設置。 所以,如果你喜歡使用Windows電源外殼,而不是命令提示符,只是這樣做:

PS: X:\> <your command> 
0

下面是我發現的一種方法。它的工作原理很乾淨,不留任何額外CMD窗口周圍(推薦使用啓動C:\ MyFolder文件\ MYAPP不起作用

cmd /c dir && c:\myfolder\myapp 

引述CMD幫助:

/C  Carries out the command specified by string and then terminates 

Note that multiple commands separated by the command separator '&&' 
are accepted for string if surrounded by quotes. 

顯然,它注意到了DIR命令終止和退出,即使您的應用程序被髮射了相同的命令。粉筆它到Windows變幻莫測之一。

-1

ü應使用cd命令例如

CD/

CD MyFolder文件

開始MYAPP

出口

相關問題