private static SCapture.IconInfo GetIconInfo(IntPtr hicon)
 {
     SCapture.IconInfo result = default(SCapture.IconInfo);
     if (!SCapture.UnsafeNativeMethods.GetIconInfo(hicon, ref result))
     {
         int lastWin32Error = Marshal.GetLastWin32Error();
         throw new SCaptureException(new Win32Exception(lastWin32Error).Message);
     }
     return(result);
 }
 private static void DrawCursor(Rectangle rect, Bitmap bmp)
 {
     SCapture.CursorInfo cursorInfo = SCapture.GetCursorInfo();
     checked
     {
         if (cursorInfo.flags == 1u && rect.Contains(cursorInfo.ptScreenPos))
         {
             IntPtr            cursorIcon = SCapture.GetCursorIcon(cursorInfo.hCursor);
             SCapture.IconInfo iconInfo   = SCapture.GetIconInfo(cursorIcon);
             Graphics          graphics   = Graphics.FromImage(bmp);
             graphics.DrawIcon(Icon.FromHandle(cursorIcon), (int)(unchecked ((long)(checked (cursorInfo.ptScreenPos.X - rect.X))) - (long)(unchecked ((ulong)iconInfo.xHotspot))), (int)(unchecked ((long)(checked (cursorInfo.ptScreenPos.Y - rect.Y))) - (long)(unchecked ((ulong)iconInfo.yHotspot))));
             graphics.Dispose();
         }
     }
 }
 public static extern bool GetIconInfo(IntPtr hIcon, ref SCapture.IconInfo piconinfo);