【发布时间】:2016-06-25 14:59:53
【问题描述】:
我有两个应用程序,每个人都执行不同的任务,第一个应用程序使用 shellExecute 运行第二个应用程序。
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);
第二个应用程序提取其中已存在的资源。
问题是:当我从第一个应用程序运行第二个应用程序时,资源没有提取虽然申请表显示给我,但是如果我直接运行第二个“双击”提取的资源!
我也试过CreateProcess和WinExec,资源也没有提取出来!!
编辑: project1 有一个按钮只打开 project2
procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(Handle, nil, PChar('D:\Project2.exe'), nil, nil, SW_SHOWNORMAL);
end;
这是project2代码,必须在创建部分提取资源!
procedure TForm1.FormCreate(Sender: TObject);
var
DllRS: TResourceStream;
begin
DllRS:= TResourceStream.Create(HInstance, 'dllFile', 'dll');
try
DllRS.SaveToFile(GetCurrentDir + '\dllFile.dll');
finally
DllRS.Free;
end;
end;
【问题讨论】:
-
虽然您没有显示实际代码,但我会说这是通常的工作目录问题。
-
您的程序有缺陷。只有知道代码的人才能修复它。
-
@FreeConsulting 调用进程的工作目录对
TResourceStream没有任何影响。TResourceStream失败的唯一方法是将错误的HInstance传递给其构造函数(假设传递了正确的资源 ID/名称)。 -
@FreeConsulting OP 没有说明正在使用的文件系统。
-
@FreeConsulting 可能正在提取到内存,而不是文件。
标签: delphi resources delphi-xe7