5

ShellExecuteを使用してボタンを押すだけで2番目のDelphiアプリケーションを呼び出す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);
   ... 

3つのオフィスがあるため、各オフィスサーバーにAppsフォルダーのコピーがあります。各サーバーには、「Z:」にマップされた共有上のAppsフォルダーがあります。

あるオフィスで、パスにスペースが含まれているとアプリケーションが見つからないという問題が見つかりました。アプリケーションは相互に直接コピーされており、他のオフィスで動作しているため、問題はマシンの設定にあるようです。

何か案は?

4

2 に答える 2

5

パラメータを使用して、次のようlpFileにキャストする必要があります。JobManagerPChar

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

open動詞パラメーターも不要でありnillpOperationパラメーター(デフォルト)を使用して渡すことができることに注意してください。

于 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 に答える