我正在尝试使用Clipboard API(在Delphi中)从Word文档中提取图像。 我的代码在Windows XP / 2003中正常工作,但在Windows 2008 64位中它不起作用。 在win 2008中我得到一个错误,说Clipboard.Formats是空的,不包含任何格式。
图像似乎被复制到剪贴板(我可以通过Word在剪贴板中看到它)但是当我试图询问剪贴板时他有什么格式它说它没有任何格式。
如何在win 2008 / Vista上以编程方式访问剪贴板? 根据我所知的2008年64位,这可能是一个安全问题......
这是代码段:
这就是我试图将图像复制到剪贴板的方式:
W.ActiveDocument.InlineShapes.Item(1).Select; // W is a word ole object
W.Selection.Copy;
这就是我尝试粘贴它的方法。
Clipboard.Open;
Write2DebugFile('FormatCount = ' + IntToStr(Clipboard.FormatCount)); // FormatCount=0
For JJ := 1 to Clipboard.FormatCount Do
Write2DebugFile('#'+ IntToStr(JJ) + ':' + IntToStr(Clipboard.Formats[JJ]));
If (Clipboard.HasFormat(CF_BITMAP)) or
(Clipboard.HasFormat(CF_PICTURE)) or
(Clipboard.HasFormat(CF_METAFILEPICT)) then // all HasFormat calls returns false.
Begin
Jpeg := TJPEGImage.Create;
Bitmap := TBitmap.Create;
Bitmap.LoadFromClipboardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0);
Jpeg.Assign(Bitmap);
Jpeg.SaveToFile(JpgFileN);
try Jpeg.Free; except; end;
ResizeImage(JpgFileN,750);
Write2DebugFile('Saving ' + JpgFileN);
End
else Write2DebugFile('Doesnt have the right format');
提前致谢, 伊泰
答案 0 :(得分:0)
那么,调试输出的格式列表是什么?副本和粘贴之间会发生什么样的延迟?你肯定需要在这些代码片段之间留出一些空闲时间。即你不能复制,然后立即希望能够粘贴。
答案 1 :(得分:0)
您可以使用Sharp IMG Viewer 2008
应用程序来检查剪贴板格式。 .NET
应用程序可以从here下载。您可以找到更详细的阅读文档信息。