5

我有一个 Delphi 应用程序,它使用 ShellExecute 在按下按钮时调用第二个 Delphi 应用程序。

应用程序存储在同一台服务器上,位于同一网络共享上。它们的路径格式为:

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 文件夹的副本。每台服务器的共享文件夹上都有映射到“Z:”的应用程序文件夹

在其中一个办公室中,我们发现了一个问题,即如果路径包含空格,则无法找到应用程序。由于应用程序是彼此的直接副本,并且在其他办公室工作,问题似乎是机器设置。

有任何想法吗?

4

2 回答 2

5

使用您的lpFile参数,您应该转换JobManagerPChar

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

请注意,open动词参数也不是必需的,您可以nil使用lpOperation参数(默认)传递。

于 2012-10-16T15:41:00.473 回答
0

它适用于双引号:

WinExec(PAnsiChar(AnsiString(ExtractFilePath(application.ExeName) + '\winrar.exe A  "c:\BACKUP 2016\backup_"' .....
于 2015-12-16T13:53:46.190 回答