Sie müssen die Datei als Ressource einschließen. Angenommen, Sie haben ein blah.xls
erstellen blah.rc
Datei mit folgendem Inhalt
blah RCDATA blah.xls
es mit der Ressource-Compiler
betten die RES-Datei innerhalb der ausführbaren
{$R 'blah.res'}
kompilieren in blah.res
extrahieren Sie die Datei in Ihrem Anwendungscode und führen Sie sie mit diesem Code
01 aus
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;
Sie ShellAPI Klausel in Ihrer uses
vielleicht müssen hinzufügen müssen Sie diese Funktion GetTempDir
function GetTempDir: string;
var
Buffer: array[0..MAX_PATH] of char;
begin
GetTempPath(SizeOf(Buffer) - 1, Buffer);
result := StrPas(Buffer);
end;
aufrufen, um die Funktion wie diese
extractAndRun('blah','blah.xls');
Ich bin Ich bin mir nicht sicher, was du verlangst. Kannst du deine Frage klären? Haben Sie jetzt funktioniert, indem Sie die Ressource aus der EXE-Datei extrahieren und CreateOleObject verwenden und Open-Aufrufe öffnen, um sie in Excel zu öffnen? Wenn ja, warum willst du etwas ändern? – RobertFrank
Ich füge angeblich Daten aus dem Programm hinzu, bevor der Benutzer mit dem Blatt interagiert, aber ich wusste nicht wirklich, wie ich die Ressource an andere Objekte weitergeben soll. Vielen Dank! –