2012-10-15 60 views
4

我有一個Delphi應用程序,使用ShellExecute調用按鈕按下第二個Delphi應用程序。ShellExecute失敗,如果空間中的路徑

應用程序存儲在同一個服務器上,在同一個網絡共享上。其路徑的格式爲:

const 
    JobManager = 'Z:\Apps\Application 1\Application1.exe'; 
    FeeManager = 'Z:\Apps\Application 2\Application2.exe'; 

到ShellExecute的調用是由如下:

rh := FindWindow(PChar('TMF'), PChar('Edit Job Details')); 
if rh = 0 then 
begin 
    ShellExecute(Handle, 'open', JobManager, nil, nil, SW_SHOWNORMAL); 
    ... 

我們有三個辦公室,我們有每個辦公室的服務器上apps文件夾的副本。每個服務器上的Apps文件夾映射到「Z:」

在其中一個辦公室中,我們發現如果路徑中包含空格,則無法找到應用程序。由於應用程序是彼此直接拷貝的,並且在其他辦公室工作,所以這個問題似乎是機器設置。

任何想法?

+1

您是否嘗試過使用雙引號? 'ShellExecute(0,nil,PChar(''Z:\ Apps \ Application 1 \ Application1.exe'',nil,nil,0);' – RRUZ

+4

顯示代碼,幷包含傳遞給ShellExecute的所有變量的值。 –

+0

@ RRUZ-我們已經嘗試在常數範圍內添加引號 –

回答

5

與您lpFile參數,你應該投JobManagerPChar

ShellExecute(Handle, 'open', PChar(JobManager), nil, nil, SW_SHOWNORMAL); 

注意,也沒有需要open動詞參數,你可以通過nillpOperation參數(默認)。

-2

它與雙引號:

WinExec(PAnsiChar(AnsiString(ExtractFilePath(application.ExeName) + '\winrar.exe A "c:\BACKUP 2016\backup_"' ..... 
相關問題