您必須將該文件包含爲資源。假設你有一個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