1. ホーム
  2. c#

[解決済み] C#でクリップボードの変更を監視するには?

2023-02-11 04:56:02

質問

C#でアクセスできるクリップボードの変更または更新イベントはありますか?

どのように解決するのですか?

p/invokeを使うしかないでしょう。

[DllImport("User32.dll", CharSet=CharSet.Auto)]
public static extern IntPtr SetClipboardViewer(IntPtr hWndNewViewer);

参照 この記事は、C#でクリップボードモニターを設定する方法について書かれています。

基本的にアプリをクリップボードビューアとして登録するには

_ClipboardViewerNext = SetClipboardViewer(this.Handle);

を受信し、その後に WM_DRAWCLIPBOARD メッセージを受け取りますが、これを処理するには WndProc :

protected override void WndProc(ref Message m)
{
    switch ((Win32.Msgs)m.Msg)
    {
        case Win32.Msgs.WM_DRAWCLIPBOARD:
        // Handle clipboard changed
        break;
        // ... 
   }
}

(クリップボードチェーンに沿ったものを渡したり、ビューの登録を解除したりと、もっとやるべきことがありますが、それは 記事 )