クリップボードの内容を保持する方法はありますか?私は次のコードを試しましたが、うまくいきません。クリップボードの内容を保持する方法
Dim iData As IDataObject = Clipboard.GetDataObject()
...(use clipboard)
Clipboard.SetDataObject(iData)
ありがとう。
クリップボードの内容を保持する方法はありますか?私は次のコードを試しましたが、うまくいきません。クリップボードの内容を保持する方法
Dim iData As IDataObject = Clipboard.GetDataObject()
...(use clipboard)
Clipboard.SetDataObject(iData)
ありがとう。
クリップボードの内容を保存する最も簡単な方法は、クリップボードだけを残すことです。クリップボードは、アプリケーション用ではなく、ユーザ用の一時的な格納領域を意味します。そのため、あなたがしようとしていることは、クリップボードを壊すよりも優れた解決策です。
OpenClipboardとCloseClipboardを使用できます。 MSDNによると、クリップボードを開くと、他のアプリケーションがデータを変更しないようになります。
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern bool OpenClipboard(IntPtr hWndNewOwner);
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern bool CloseClipboard();
ありがとうございましたが、私が望むのは、クリップボードの内容を保存し、クリップボードを使用してコピー/貼り付けを行い、元の内容を復元できることです。 –
クリップボードを開いたままにすると、他のアプリケーションがクリップボードを開こうとしたときにクラッシュしたり、クリップボードを開けたり、正しく処理したりすることができません。 –
上記のコードはどのように機能しませんでしたか? C#で同等のコードを試すと、Clipboard.SetDataObject(iData)を呼び出す際に "CloseClipboardが失敗しました(HRESULTからの例外:0x800401D4(CLIPBRD_E_CANT_CLOSE))"例外が発生します。
ただし、次の回避策は私のために仕事をしていません:
// save
Dictionary<String, Object> d = new Dictionary<String, Object>();
IDataObject ido = Clipboard.GetDataObject();
foreach (String s in ido.GetFormats(false))
d.Add(s, ido.GetData(s));
// ...
// restore
var da = new DataObject();
foreach (String s in d.Keys)
da.SetData(s, d[s]);
Clipboard.SetDataObject(da);
あなたの答えはThakです。試してみましたが、それはプレーンテキストのために機能します。残念ながら、クリップボードのテキストがMS Wordのものである場合、エラーが発生します。 –
私は文脈が重要であることに同意するものとします。私のケースでは、ダイナミックに書かれた書式設定された表紙文書を、動的に生成されたテキスト(MS Wordのすべて)の前面に貼り付けることにしました。ここで私が見つけた解決策(VSTOとC#を使用して):
object start = 0;
Word.Range startRng = a_TreatedDocument.Range(ref start, ref start);
startRng.FormattedText = a_CoverPageDocument.Content.FormattedText;
注:これはテーブルと書式付きテキストで動作します。
ありがとうございますが、私の質問には答えられません。 –
あなたがあなたの質問にそれをしたい理由を含めるなら、うれしいでしょう。次に、あなたが望むことをするソリューションを考案する方が簡単です。私はまだクリップボードを一時的に非常に愚かな考えをclobbering考える。 – Joey
有効な理由はありません。 "プログラムは、ユーザーからの明示的な指示なしに、私たちのクリップボードからデータを取り出すべきではありません。" - Charles Petzold、Programming Windows 3.1、Microsoft Press、1992 –