【发布时间】:2013-01-30 21:24:58
【问题描述】:
我搜索了 StackOverlow 并用谷歌搜索了自己的愚蠢,但找不到解决此问题的方法。
我希望能够预览文件的内容。我目前可以为 BMP、JPEG 等执行此操作,但我希望能够为任何具有默认程序关联的文件执行此操作。最可能的示例是 PDF 文件,但理论上任何文件都可以在此应用程序中使用。
我的想法是:-
- 打开文件(使用 ShellExecuteEx?)
- 等待打开完成
- 复制打开程序显示的第一个窗口的内容
- 将窗口保存到 TBitMap
- 关闭文件/程序/窗口
- 在 TImage 中显示捕获的 BMP 作为我的预览。
我认为我可以执行第 1 步和第 6 步,但中间的部分让我被打败了 :-(
我正在使用 Delphi-7
干杯
杰夫
【问题讨论】:
-
这是一个非常广泛的问题,您要问几个不同的问题,需要相当多的代码才能完成。也许您应该将其分解为单独的步骤(或至少合理的步骤子组)并将它们作为单独的问题发布。这有点像说“我想要一个做这些事情的应用程序。你能在这里为我写吗?”。 SO 真的是简短、具体的问题,可以在合理的空间内回答。 FAQ 有一些关于在这里写问题的提示,可能会有所帮助。 :-)
-
嗯...我认为我已将其分解为 6 个步骤,并且由于它们都相互关联,因此我没有看到针对每个可以给我答案的问题写一个问题的意义不适合在一起。我不是要别人写一个应用程序——预览屏幕只会出现在一个已经持续开发了 14 年的应用程序的 100 个屏幕上——有点无聊 ;-) 在我的无知中,我没有意识到这个问题是一个广泛的问题 ;-) 无论如何感谢您的关注和感谢所有贡献者 - 我从网站上收集了许多有用的代码 sn-ps :-)
-
您的列表中省略了其他步骤,例如从您从
ShellExecuteEx返回的进程句柄 ('HANDLE') 到窗口句柄 (HWND),获取其大小window 以便创建位图,将窗口内容放入位图中,正确关闭其他进程等。我不是说您要求我们为您编写应用程序;我说这个问题足够广泛,几乎是同一件事。 :-) 我们只需要添加一个带有按钮的主窗体和一个文件名的编辑控件,我们就会在那里。 -
“您的列表中省略了其他步骤......”有点暴露了我的无知 ;-) 如果我知道这些,我想我会问这些。这有点恶性循环,我不知道我不知道什么。 :-(
-
您可以从Torry's Delphi Pages 开始,其中一些标记为
FWS(免费提供源代码)。那里至少有几个项目可以显示屏幕截图部分,然后您可以继续执行其他步骤。 :-)