クリップボードに変更を保存したい。そのため、アプリケーションを登録して、クリップボードに発生するすべての変更を取得しました。
使用する
[DllImport("User32.dll")]
protected static extern bool AddClipboardFormatListener(int hwnd);
その後
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WM_CLIPBOARDUPDATE:
OnClipboardChanged();
break;
...
}
}
private void OnClipboardChanged()
{
if (Clipboard.ContainsText())
{
MessageBox.Show(Clipboard.GetText().ToString());
}
}
問題は: Visual Studio や firefox などのアプリケーションからテキストをコピーするときに、OnClipboardChanged() 関数が 2 回または 3 回呼び出されることがあります。
これらのアプリケーションは、データをさまざまな形式でクリップボードに書き込むと思います。これが、関数が複数回呼び出される理由です。しかし、 OnClipboardChanged() が複数回呼び出されているため、同じデータを保存しないようにするにはどうすればよいですか?