Обновление: эта проблема была устранена.Clipboard Copy-Paste не работает в службе на Win Server 2008/Vista 64bit
вы можете прочитать о решении здесь: Creating a process in a non-zero session from a service in windows-2008-server?
Спасибо всем!
Привет,
Я пытаюсь использовать 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');
Спасибо заранее, Itay
delphi версия? – ulrichb
Мое предположение заключается в том, что Word хранит данные с использованием 64-разрядной памяти, которую не может получить 32-разрядное приложение Delphi. –
также может возникнуть проблема, потому что я запускаю ее как службу ... –