私は2人のアプリケーションが誰もが異なるタスクを実行しているので、最初のアプリケーションはshellExecute
を使って2番目のアプリケーションを実行します。私は別のアプリケーションからshellExecuteを使ってアプリケーションを実行するとTResourceStreamが動作しない
ShellExecute(Handle, nil, PChar('D:\Project2.exe'), nil, nil, SW_SHOWNORMAL);
ShellExecute(Handle, nil, PChar('cmd.exe'), PChar('/C D:\Project2.exe'), nil, SW_SHOWNORMAL);
第2のアプリケーションは、その内部に既に存在するリソースを抽出します。
問題は:最初のアプリケーションから2番目のアプリケーションを実行するとリソースが抽出されませんアプリケーションフォームが私に表示されますが、2番目を直接実行するとリソースが抽出されます。
CreateProcess
とWinExec
も試してみましたが、リソースも抽出されていません!!
編集: Project1のが
procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(Handle, nil, PChar('D:\Project2.exe'), nil, nil, SW_SHOWNORMAL);
end;
のみオープンProject2のボタンを持っている、これは作成セクションでリソースを抽出する必要があり、のProject2コードです!
実際のコードは表示されませんが、通常の作業ディレクトリの問題だと思います。 –
プログラムに欠陥があります。コードを持つ誰かだけがそれを修正できます。 –
@Free呼び出しプロセスの作業ディレクトリは 'TResourceStream'には何の影響も与えません。 'TResourceStream'が失敗する唯一の方法は、間違った' HInstance'がコンストラクタに渡された場合です(正しいリソースID /名前が渡されていると仮定して)。 –