1

AdobeReaderと単純なテキストのドラッグアンドドロップ機能に問題があることを発見しました。

テキストを選択して.NETアプリケーション(またはnotepad ++やVisualStudioなどのテキストエディター)にドロップすると、テキストにランダムな文字が添付されます。

私は一生懸命に努力して問題を観察しました、そして私の観察が行く限り、私は次のように言うことができます:

  1. 同じテキストをドラッグするために選択した場合、2回発生することはありません。
  2. 添付されたテキストは常にほんの数文字の長さです(少なくとも10)
  3. 添付された文字は、以前に削除されたテキストの断片であるように見える場合があります
  4. 添付文字が英数字ではない場合があり、認識が困難です。
  5. 選択したテキストはどこでもかまいません(段落全体だけでなく)

ドロップしたテキストをアプリケーション内の他のテキストと比較しますが、ドラッグしなかった文字がいくつかあるため、これは明らかに失敗します。

.NET側では、標準のIDataObjectインターフェイスを使用し、複数の形式を試しましたが、動作は常に同じです。再現は可能ですが、ランダムに発生するため予測できません。

だから私の質問は次のとおりです:これはAdobe Readerのバッファ充填の問題ですか(バージョン8、9、Xでセキュアモードがオフになっている場合に発生します)?これは、どのサードパーティプログラムがPDFを作成したかに依存しますか?誰かが同じ行動を経験しましたか(私はこれについて何も見つけることができないので)?

事前に私は他のpdfを言わなければなりません-それはここでのビジネスポリシーであるため、リーダーはオプションです:)。

この質問に答えてくれた方に感謝します。

4

1 に答える 1

2

何日もの調査の結果、私は次の結論に至りました。

これは両側のバグです(adobe / .Net)。最初、Adobe ReaderからドラッグされたOleDataObjectに含まれる文字列は、nullで終了しません。これは、データを交換するための非常に危険な方法です。この機能がAdobeReaderXの標準構成でオフになっているのも不思議ではありません(ただし、ロックを解除することはできます)。.Net側では、正しく機能するためにすべての文字列を終了する必要があります。ポインタを取得すると、「\ 0」文字が見つかるまでメモリを実行し、間違った文字(または以前にドラッグしたテキストの文字)を追加する新しい文字列インスタンスが作成されます。この混乱の解決策は、OleDataObjectに含まれるテキスト部分のサイズを照会することです。このサイズ(明らかに結果の文字列サイズ以下)を使用して、元の文字列に対して部分文字列操作を実行できます。これらすべてが整っているので、文字列に間違った文字が付加されることはありません。-解決しました

于 2011-01-20T16:05:51.437 に答える