0

クリップボード 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');

前もって感謝します、イタイ

4

2 に答える 2

0

では、デバッグ出力の形式リストは何ですか? そして、コピーとペーストの間にどのような遅延が発生しますか? これらのコードのスニップの間には、必ずアイドル時間が必要です。つまり、コピーしてすぐに貼り付けできると期待することはできません。

于 2010-03-27T12:24:12.903 に答える
0

アプリケーションを使用Sharp IMG Viewer 2008して、クリップボードのフォーマットを調べることができます。申請書はこちら.NETからダウンロードできます。詳細については、ドキュメントを参照してください。

于 2010-04-22T10:32:59.693 に答える