一尘不染

剪贴板事件C#

c#

是否可以通过C#访问剪贴板更改或更新的事件?


阅读 458

收藏
2020-05-19

共1个答案

一尘不染

我认为您必须使用一些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;
        // ... 
   }
}

(还有很多事情要做;沿着剪贴板链传递信息并取消注册视图,但是您可以从本文中获取信息

2020-05-19