ファイルをコピーした後、クリップボードのデータが失われるのはなぜですか?

ファイルをコピーした後、クリップボードのデータが失われるのはなぜですか?

ファイルをコピーするとクリップボードのデータが失われるのはなぜでしょうか。テキストの文字列を選択してクリップボードにコピーした後、ファイルを選択して Windows エクスプローラーでコピーしてからテキストをどこかに貼り付けると、コピーされたテキスト データが何らかの理由で失われます。

たとえば、次のテキスト文字列を選択してコピーします。

黒い犬は夜に走る

次に、Windows エクスプローラーに移動してファイルを選択してコピーします。

タイトルなし.bat

この後、ファイルのコピーを貼り付けますuntitled.bat。その後、テキストを貼り付けることができる場所 (メモ帳など) に移動すると、最初にコピーしたテキスト文字列は貼り付けるクリップボードに残っていません。

Windows はなぜこれを実行するのでしょうか?

Windows10 Proを実行

答え1

クリップボードのデータは「失われる」わけではありません。新しいデータで上書きされるだけです。デフォルトで古いデータは RAM に単一のレコードとして保存されるため、アクセスできません。ただし、追跡するより良い方法があり、その 1 つを後で示します。

これは、システムが正確に何を貼り付けたいのかを完全に把握できず、そのためのショートカットが 1 つしかないためですCtrlVアプリケーションは、特定の形式をチェックし、必要に応じてすべてを適切に処理するようにコーディングできます。したがって、最後の項目が何であるかを決定するのはユーザー次第です。また、現在の形式がサポートされているかどうかをユーザーに通知するのはアプリケーション次第ですが、残念ながら、サポートされていない形式の貼り付けが行われた場合、多くのアプリケーションは何も行いません。

この Web サイトの質問/回答テキスト ボックスは良い例です。テキスト ( CF_TEXT/ CF_UNICODETEXTtype) を最後の項目として指定すると、テキストとして貼り付けられます。また、画像を最後の項目として指定すると ( CF_DIBtype)、画像がアップロードされます。または、Windows エクスプローラーからファイルをコピーして ( CF_HDROPtype) 貼り付けても何も起こりません。通常の画像以外のファイルのアップロードはここでは歓迎されません。

比較すると、たとえば Gmail でメールを作成すると、これらすべてのタイプがサポートされます。CF_TEXTは引き続きテキストを貼り付けます。CF_DIBは引き続きインライン画像を貼り付けます。 ただし、CF_HDROP今回はより適切に処理され、添付ファイルとして送信されます。

Windowsで利用可能なタイプ/フォーマットの詳細については、こちらをご覧ください。ここ


次のような高度なクリップボードマネージャーを使用できます。同上この制限を回避するには:

  • デフォルトでは、アイテムの履歴へのアクセスははるかに簡単です - リストを表示して操作できます(たとえば、次のアイテムに移動するためのショートカットを使用) - 必要に応じてさらに設定できます。
  • 異なるタイプのストレージに使用する 3 つの追加の特別なコピー バッファを構成することもできます。Options->ではCopy Buffers、各バッファに 3 つのキー バインド (個別のリスト) を設定します: コピー、貼り付け、切り取り。これを従来のショートカット + として定義するとします。次に、 + +Shiftを使用してすべてのファイルを新しく定義されたバッファにコピーできますが、メイン クリップボードにはテキストが保持されます。これは、特定のワークフローに役立ちます。ShiftCtrlC

LinuxではコピーQ

システム自体が複数のバッファを実装しないのはなぜでしょうか。さまざまな理由があり、「意見に基づく」領域に入りますが、実際には、快適に使用できるようにするために余分なキーボード ショートカットやボタンを追加すると混乱が生じ、この機能を必要としないユーザーのシステムが混乱するのは好ましくありません。

答え2

クリップボードに保存できるのは一度に1つのアイテム、おそらく1つまたは複数の形式で。たとえば、あるウェブサイトから画像をコピーすると、ブラウザは画像ビットマップ、画像URL、ウェブサイト、代替テキストなどを配置し、貼り付け先のアプリは貼り付け時に適切な形式を選択しますが、それでも1つの項目にすぎません。クリップボードで現在の形式を簡単に確認できます。これとともに

Ctrl複数の項目を保存できる場合、 + を押したときに OS はどのようにして貼り付ける内容を知ることができるのでしょうかV。これは、ほとんどすべての OS で同じです。種類に関係なく別のものをコピーすると、古いコンテンツは失われます。ファイルをコピーすると、ファイルを表すオブジェクトがクリップボードにテキストとして保存され、ファイル パスもクリップボードに保存されます。古いテキストはどのようにして保持されるのでしょうか。複数の項目のクリップボードがサポートされている場合、Ctrl+を押したときの適切な動作Vは、一番上の項目を貼り付けることですが、ファイルをコピーしたときにテキストがクリップボードに保存されていた場合、前のテキストはすでにリストの下の方にあるため、貼り付けることはできません。


ただし、Windowsにはクリップボード履歴機能が組み込まれているので、それを有効にしてWin+を押すだけですV。Windows PC間で同期することもできます。

クリップボードの設定

クリップボード履歴

答え3

Windows のクリップボードには複数の形式を保存できます。何かをコピーすると、ソース アプリケーションは通常、複数の形式でデータをクリップボードに配置します。コピー先のアプリケーションは、両方のアプリケーションがサポートする「最適な」形式を選択できます。新しい項目をクリップボードにコピーすると、通常、既存のコンテンツが置き換えられます。

Windows エクスプローラーでコピーして貼り付ける場合、Windows クリップボードが使用されますが、実際にファイル全体をクリップボードに移動/コピーするのではなく、ファイルの詳細と、ユーザーが「切り取り」(ファイルの移動) または「コピー」(ファイルのコピー) 操作を選択したかどうかがクリップボードに保存されます。その後、ユーザーがファイルを宛先に貼り付けると、実際の移動またはコピーが実行されます。

以前は、別のアプリケーションで何かをコピーして Windows エクスプローラーに貼り付けると、クリップボードの内容を含む「スクラップ」ファイルが作成されていましたが、この機能はほとんど使用されなかったため、Windows Vista では削除されました。

これにより、Windows エクスプローラーは、システム クリップボードを使用するものの、他のほとんどのアプリケーションと相互運用できないという、少し奇妙な状態になります。

答え4

他の人たちはすでに、これが起こる技術的な理由を指摘しています。自分でそれを観察したい場合は、NirSoft クリップボード内. Windows クリップボードの内容が表示されます (Windows クリップボードの履歴ではありません)。コピーしたものが 1 つだけ表示されますが、プレーン テキストや HTML など、さまざまな形式で存在する可能性があります。

テキストは次のようになります:

テキストをコピーしました

その後

  • Ctrl+Cまたは
  • ファイルのコンテキストメニュー / コピー
  • リボンコピー

Windowsエクスプローラーの場合:

ファイルをコピーしました

この特定の問題に対する解決策:

  • マウスでファイルを選択して押したまま、Ctrlコピーを作成するために を押し、 で示されるコピー アイコンが表示されるまでマウスを移動し[+]、マウス ボタンを放します。
  • サードパーティのツールを使用する高速コピーファイルをコピーします。

関連情報