[DllImport("user32.dll")]
static extern IntPtr SetClipboardViewer(IntPtr hWndNewViewer);
None.
None.
Please add some!
[DllImport("user32.dll")]
static extern IntPtr SetClipboardViewer(IntPtr hWndNewViewer);
[DllImport("user32.dll")]
static extern IntPtr GetClipboardViewer();
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool ChangeClipboardChain(IntPtr hWndRemove, IntPtr hWndNewNext);
[DllImport("user32.dll", SetLastError = true)]
static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
IntPtr hWndNextWindow;
protected override void WndProc(ref Message m)
{
switch(m.Msg)
{
case (0x0001): // WM_CREATE
hWndNextWindow = SetClipboardViewer(this.Handle);
break;
case (0x0002): // WM_DESTROY
ChangeClipboardChain(this.Handle, hWndNextWindow);
break;
case (0x030D): // WM_CHANGECBCHAIN
if (m.WParam == hWndNextWindow)
hWndNextWindow = m.LParam;
else if (hWndNextWindow != IntPtr.Zero)
SendMessage(hWndNextWindow, m.Msg, m.WParam, m.LParam);
break;
case (0x0308): // WM_DRAWCLIPBOARD
{
// If the clipboard has changed, this event will be executed.
}
SendMessage(hWndNextWindow, m.Msg, m.WParam, m.LParam);
break;
}
base.WndProc(ref m);
}
The ManagedWindowsApi project (http://mwinapi.sourceforge.net) provides a
ClipboardNotifier class.