Das Kopieren und Einfügen der Zwischenablage funktioniert in einem Dienst unter Win Server 2008 / Vista 64bit nicht

Update: Dieses Problem wurde behoben.

Sie können über die Lösung hier lesen:Erstellen eines Prozesses in einer Sitzung ungleich Null aus einem Dienst in Windows-2008-Server?

Vielen Dank an alle!

Hallo,

Ich versuche, die Zwischenablage-API (in Delphi) zu verwenden, um Bilder aus Word-Dokumenten zu extrahieren. Mein Code funktioniert in Windows XP / 2003 einwandfrei, aber in Windows 2008 64-Bit funktioniert er nicht. In Win 2008 bekomme ich eine Fehlermeldung, dass Clipboard.Formats leer ist und kein Format enthält.

Das Bild scheint in die Zwischenablage kopiert worden zu sein (ich kann es in der Zwischenablage über Word sehen), aber als ich versuche, die Zwischenablage nach dem Format zu fragen, hat er gesagt, dass es keine Formate hat.

Wie kann ich unter Windows 2008 / Vista programmgesteuert auf die Zwischenablage zugreifen? Nach dem, was ich von 2008 64-Bit weiß, könnte es ein Sicherheitsproblem sein ...

Hier ist das Code-Snippet:

So versuche ich, das Bild in die Zwischenablage zu kopieren:

W.ActiveDocument.InlineShapes.Item(1).Select; // W is a word ole object
W.Selection.Copy;

und so versuche ich es einzufügen.

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

Danke im Voraus, Itay

Antworten auf die Frage(1)

Ihre Antwort auf die Frage