使用正确的程序在内存流中打开文件

时间:2013-10-30 18:01:04

标签: delphi pdf

我的应用程序将文件保存到数据库字段。它将文件类型.pdf,.doc,.xls和.html(例如)保存到表中,以便稍后我可以提取值并将其作为文件打开。

目前,我正在将文件(在此示例中键入pdf)保存到我创建的SQL表中的Varbinary字段中。然后我使用以下代码将该文件读回内存流:

TBlobField(FieldByName('FileData')).SaveToStream(FileData);

我可以将它保存到桌面上作为pdf就好了。但是我想使用适当的应用程序(在本例中为adobe acrobat)直接从内存流中打开它。我可以先将它写入文件然后用shellexecute打开它,但我宁愿直接打开它。我将如何实现这一目标?任何帮助将不胜感激,我看了一遍,只能找到使用shellexecute打开Filepaths的例子。 ShellExecuteEx声称lpFile可以设置为一个对象,但我没有运气好运。

1 个答案:

答案 0 :(得分:1)

你做不到。内存对进程是私有的。 Acrobat进程执行时,无法读取您的内存。您必须保存到文件并要求Acrobat打开它,或在您的过程中托管PDF查看器组件。