我有一个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文件夹的副本。每个服务器的共享上的Apps文件夹映射到“Z:”
在其中一个办公室,我们发现了一个问题,如果路径包含空格,则无法找到应用程序。由于应用程序是彼此的直接副本,并且在其他办公室工作,问题似乎是机器设置。
有什么想法吗?
答案 0 :(得分:5)
使用lpFile
参数,您应该将JobManager
投射为PChar
:
ShellExecute(Handle, 'open', PChar(JobManager), nil, nil, SW_SHOWNORMAL);
请注意,也不需要open
谓词参数,您可以使用nil
参数传递lpOperation
(默认)。
答案 1 :(得分:-2)
它适用于双引号:
WinExec(PAnsiChar(AnsiString(ExtractFilePath(application.ExeName) + '\winrar.exe A "c:\BACKUP 2016\backup_"' .....