您必须将该文件包含为资源。假设你有一个blah.xls
与以下内容创建blah.rc
文件
blah RCDATA blah.xls
与资源编译器编译成blah.res
嵌入可执行
{$R 'blah.res'}
内的RES文件在您的应用程序代码中,提取文件并使用此代码运行它
procedure ExtractAndRun(resourceID:string; resourceFn:string);
var
resourceStream: TResourceStream;
fileStream: TFileStream;
tempPath: string;
fullFileName: string;
begin
tempPath:=GetTempDir;
FullFilename:=TempPath+'\'+resourceFN;
if not FileExists(FullFilename) then
begin
resourceStream := TResourceStream.Create(hInstance, resourceID, RT_RCDATA);
try
fileStream := TFileStream.Create(FullFilename, fmCreate);
try
fileStream.CopyFrom(resourceStream, 0);
finally
fileStream.Free;
end;
finally
resourceStream.Free;
end;
end;
ShellExecute(0,'open', pchar(FullFilename), nil, nil, SW_SHOWNORMAL);
end;
你就必须添加在ShellAPI的用途的条款
也许你会需要这个GetTempDir功能
function GetTempDir: string;
var
Buffer: array[0..MAX_PATH] of char;
begin
GetTempPath(SizeOf(Buffer) - 1, Buffer);
result := StrPas(Buffer);
end;
调用函数,这样
extractAndRun('blah','blah.xls');
我不确定你在问什么。你能澄清你的问题吗?现在通过从.exe中提取资源,然后使用CreateOleObject和Open调用在Excel中打开它,它现在能够工作吗?如果是这样,你为什么想要改变。 – RobertFrank 2010-11-22 13:41:11
我从程序中添加数据,据说在用户与表单交互之前,我并不知道如何将资源传递给其他对象。谢谢! – 2010-11-22 15:02:36