title: Get Clipboard owners Title/Caption
body: <p>I am working on a project which will not allow users to copy text from few of the external websites, I was able to setup a ClipboarViewer and it is interrupting the clipboard, now I am trying to get the owner of the clipboard and then the title/caption of the windows, below is what I have tried but it always returns empty</p>
  
  <pre><code>    protected override void WndProc(ref Message m)
          {
              switch ((User32.Message) m.Msg)
              {
                  case User32.Message.WM_DRAWCLIPBOARD:
                  {
                      ClipboardChanged();
  
                      User32.SendMessage(_nextClipboardViewer, m.Msg, m.WParam, m.LParam);
  
                      string title = User32.GetWindowTitle(User32.GetClipboardOwner());
                  }
                  break;
  
                  case User32.Message.WM_CHANGECBCHAIN:
                  {
                      if (m.WParam == _nextClipboardViewer)
                      {
                          _nextClipboardViewer = m.LParam;
                      }
                      else
                      {
                          User32.SendMessage(_nextClipboardViewer, m.Msg, m.WParam, m.LParam);
                      }
                  }
                  break;
  
                  case User32.Message.WM_CLIPBOARDUPDATE:
                  {
                      ClipboardChanged();
  
                      string title = User32.GetWindowTitle(User32.GetClipboardOwner());
                  }
                  break;
  
                  default:
                  {
                      base.WndProc(ref m);
                  }
                  break;
              }
          }
  
  
  public static string GetWindowTitle(IntPtr hWnd)
  {
         StringBuilder Caption = new StringBuilder(256);
  
         //hWnd = GetActiveWindow();
         GetWindowText(hWnd, Caption, Caption.Capacity);
  
        return Caption.ToString();
  }
  
  [DllImport("User32.dll", CharSet = CharSet.Auto)]
  public static extern IntPtr GetClipboardOwner();
  
  [DllImport("user32", CharSet = CharSet.Auto)]
          public static extern int GetWindowText(IntPtr hWnd, [Out, MarshalAs(UnmanagedType.LPTStr)] StringBuilder lpString, int nMaxCount);
  
  [DllImport("user32", CharSet = CharSet.Auto)]
  public static extern IntPtr GetActiveWindow();
  </code></pre>
  
  <p>if I change the handler to the GetActiveWindow() then it works which is strange because the GetClipboardOwner() does return a value which is not null.</p>