Копирование и вставка буфера обмена не работает на Win Server 2008/Vista 64bit

Я пытаюсь использовать Clipboard API (в Delphi) для извлечения изображений из документов Word. мой код работает нормально в Windows XP/2003, но в 64-битной Windows 2008 это не работает. В Win 2008 я получаю сообщение о том, что Clipboard.Formats пуст и не содержит никакого формата.

Кажется, что изображение скопировано в буфер обмена (я вижу его в буфере обмена через Word), но когда я пытаюсь спросить буфер обмена, в каком формате он находится, оно говорит, что не имеет никаких форматов.

Как я могу получить доступ к буферу обмена программ на Win 2008/Vista? из того, что я знаю о 64-разрядной версии 2008 года, это может быть проблемой безопасности...

вот фрагмент кода:

Вот как я пытаюсь скопировать изображение в буфер обмена:

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');

Заранее спасибо, Итай

2 ответа

Итак, каков список форматов из вашего отладочного вывода? И какая задержка происходит между копией и вставкой? Вам определенно понадобится простой между этими фрагментами кода. то есть вы не можете скопировать, а затем сразу ожидать, что сможете вставить.

Ты можешь использовать Sharp IMG Viewer 2008 приложение для изучения форматов буфера обмена. .NET Приложение можно скачать здесь. Вы можете найти более подробную информацию, читая документацию.

Другие вопросы по тегам