Копирование и вставка буфера обмена не работает на Win Server 2008 / Vista 64bit - PullRequest
0 голосов
/ 03 февраля 2010

Я пытаюсь использовать 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 ]

0 голосов
/ 22 апреля 2010

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

0 голосов
/ 27 марта 2010

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

...